java异常处理机制:
1.把可能会发生错误的代码放进try语句块中。
2.当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误。
catch语句块中的代码用于处理错误。
3.当异常发生时,程序控制流程由try语句块跳转到catch语句块。
4.不管是否有异常发生,finally语句块中的语句始终保证被执行。
5.如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。
finally的功能:
1.资源泄露:当一个资源不再被某应用程序使用,但此程序并未向系统声明不再使用此资源时发生这种情况
2.finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行。
3.注意:finally语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。
4.system.exit(0);出现,finally也将不再执行(5)源代码:
package test; import javax.swing.JOptionPane; public class Shuru { double num; public void input(){ try{ String str=JOptionPane.showInputDialog("请输入成绩:"); num=Double.parseDouble(str); } catch(NumberFormatException e){ JOptionPane.showMessageDialog(null, "输入的不是数字!",null, JOptionPane.PLAIN_MESSAGE); input(); } finally{ JOptionPane.showMessageDialog(null, "ok!",null, JOptionPane.PLAIN_MESSAGE); } } public static void main(String args[]){ Shuru a=new Shuru(); while(true){ a.input(); if(a.num<=100&&a.num>=90){ JOptionPane.showMessageDialog(null, "成绩优秀!",null, JOptionPane.PLAIN_MESSAGE);break; } else if(a.num<=89&&a.num>=80){ JOptionPane.showMessageDialog(null, "成绩良好!",null, JOptionPane.PLAIN_MESSAGE);break; } else if(a.num<=79&&a.num>=70){ JOptionPane.showMessageDialog(null, "成绩中等!",null, JOptionPane.PLAIN_MESSAGE);break; } else if(a.num<=69&&a.num>=60){ JOptionPane.showMessageDialog(null, "成绩及格!",null, JOptionPane.PLAIN_MESSAGE);break; } else if(a.num<=59&&a.num>=0){ JOptionPane.showMessageDialog(null, "成绩不及格!",null, JOptionPane.PLAIN_MESSAGE);break; } else{ JOptionPane.showMessageDialog(null, "输入数字超出范围!",null, JOptionPane.PLAIN_MESSAGE); } } } }
设计思想:定义input方法,输入判断看看是不是数字,如果不是则递归输入,进入主函数后,while循环判断其是不是超出输入范围,并且判断成绩类型。
程序流程图: