首页 > 代码库 > java中的报错机制

java中的报错机制

异常:Exception,程序运行过程中因为一些原因,使得程序无法运行下去注意:在程序能够运行起来的情况,不是程序编译通不过举例:读文件,点击一个按钮,文件不存在;访问数据库服务器,数据库服务器停电了(1)异常的出现由于运行中遇到预想不到的情况(2)异常的性质1)出现异常,程序全部终止,不运行后面的代码2)当出现异常时,系统会将异常封装在一个类的对象中,通知系统终止(抛出异常)。如果任由软件出现异常,软件将非常不稳定,质量很低(3)异常如何处理?1)用try将可能出现异常的代码包围起来2)将出现异常之后的处理代码用catch包围起来,放在try的后面原理:系统运行try中的代码,如果没有异常,将不会运行catch中的代码;如果出现异常,将略过try中剩余的代码,转而执行catch中的代码,catch中代码执行完毕之后,再执行软件剩余的代码注意:一个try后面可以接1个或多个catch,catch中的异常类型不同,捕捉不同的异常,catch中如果写catch(Exception e)则捕捉所有异常还有一个finally,用在catch后面,可用可不用,最多只能用一个finally中,保存不管是否出现异常,一定要执行的代码举例:打开一个文件,读文件,关闭文件连接在读文件过程中不管是否出现异常,关闭文件的工作一定要做finally并不是可有可无的!finally中的代码,只要整个软件还在运行,不管当前作用域是否结束,都会执行一次。如果不将代码放在finally中,就不会有这样的效果。异常的概念异常的出现异常的处理try-catch-finallytry只有1个,catch1个以上,finally最多1个------异常的其他应用(1)通过异常改变程序行为举例:输入一个数,显示该数平方。但是,如果输入格式不是数字,将反复出现输入框,直到输入正确为止。(2)通过自定义异常来封装程序错误信息举例:编写一个函数,输入一个年龄,0-100之间,返回年龄给主函数。否则返回“范围错误”给主函数。一般情况下,函数中如果有throw标记,说明它可能会抛出异常。此时,函数定义上应该加上throws标记
//异常的出现:输入一个数,显示该数的平方import javax.swing.*;class Exception1{    public static void main(String[] args){        String str = JOptionPane.showInputDialog("输入");        int n = Integer.parseInt(str);                int r = n * n;        System.out.println("结果是:" + r);    }}
//异常的出现:输入一个数,显示该数的平方import javax.swing.*;class Exception1{    public static void main(String[] args){        int n=0;        try{                    String str = JOptionPane.showInputDialog("输入");            n = Integer.parseInt(str);                    System.out.println("asdfjsadf");        }catch(Exception e){            System.out.println("程序出现了异常");        }        int r = n * n;        System.out.println("结果是:" + r);        }}
//异常的出现:输入一个数,显示该数的平方import javax.swing.*;class Exception1{    public static void main(String[] args){        int n=0;        try{                    String str = JOptionPane.showInputDialog("输入");            n = Integer.parseInt(str);                }catch(NumberFormatException e){            System.out.println("程序出现了数字格式转换异常");        }catch(Exception e){            System.out.println("程序出现了异常");        }                        int r = n * n;        System.out.println("结果是:" + r);        }}
//finallyclass Exception1{    public static void main(String[] args){       try{       System.out.println("打开文件");       System.out.println("读写文件");  Integer.parseInt("a");       }catch(Exception ex){ System.out.println("出现异常"); }       finally{        System.out.println("关闭文件连接");     }    }}
//finallyclass Exception1{    public static void main(String[] args){       try{       System.out.println("打开文件");       System.out.println("读写文件");  Integer.parseInt("a");       }catch(Exception ex){ System.out.println("出现异常"); }       System.out.println("关闭文件连接");    }}
//finallyclass Exception1{    public static void main(String[] args){       try{       System.out.println("打开文件");       System.out.println("读写文件");        return;       }catch(Exception ex){}      finally{ System.out.println("关闭文件连接"); }    }}
//(1)通过异常改变程序行为. //举例:输入一个数,显示该数平方。但是,如果输入格式//不是数字,将反复出现输入框,直到输入正确为止。import javax.swing.*;class Exception1{    public static void main(String[] args){        int n = 0;        String message  = "输入";        while(true){          try{              String str = JOptionPane.showInputDialog(message);            n = Integer.parseInt(str);                    break;          }    catch(Exception e){              message = "重新输入";              }        }        int r = n * n;        System.out.println("结果是:" + r);        }}
//编写一个函数,输入一个年龄,0-100之间,返回年龄//给主函数。否则返回“范围错误”给主函数。class Exception1{    static int setAge() throws Exception{//该函数可能抛出异常        int inputAge = 2000;        if(inputAge<0||inputAge>100)  {            Exception e = new Exception("范围错误");            throw e;//抛出一个实际的异常        }        return inputAge;    }    public static void main(String[] args){        //如何获得返回/抛出的内容呢?        try{            int result = setAge();            System.out.println(result);        }catch(Exception e){            System.out.println(e.getMessage());        }    }}
JDK 中重要包的作用包名称  内容  举例java.lang  核心语言包,最基本的 API  System、Integer、数学运算java.awt  抽象窗口工具包,生成图形用户界面  按钮,界面java.awt.event  事件处理包  按钮点击事件javax.swing  更加丰富的图形用户界面生成包  带图标的按钮java.util  工具包  随机数、日期javax.io  输入输出包  文件读写javax.net  网络编程支持包  网络传输
java.lang 包中的类使用,无需用 import 导入。比如,我们使用“Systerm.out.println()”时,从来没有用“import java.lang.System”来导入 System 类
对于包来说,我们一般可以观察其树型结构,对于类来说,我们一般观察其内容。

技术分享

另外,我们还可以查看一个类的基本内容。一般情况下,我们可以在左下方窗口选择一个类的链接,这个类的链接就显示在右方窗口。如我们选择“java.awt”包中的“Button”类(首先在左上角的窗口中选择“java.awt”,然后在左下角窗口中选择“Button”)

技术分享

在右方窗口中,首先列出了 Button 类的继承关系以及基本用法,读者可以在里面看到该类的成员,用如下标记标明:

技术分享

构造函数,用如下标记标明:

技术分享

成员函数,用如下标记标明:

技术分享

以及从父类继承的成员,用如下标记标明:

技术分享

 

java中的报错机制