• Java异常处理


    ----------siwuxie095

       

       

       

       

       

    1、认识异常

       

    异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,

    就可能导致程序的中断执行,造成不必要的损失

       

    异常范例:

       

    代码1

       

    package com.siwuxie095.exception;

       

    class Exc{

    int i=10;

    }

       

    public class ExceptionDemo01 {

       

    public static void main(String[] args) {

    Exc e=null;

    //如果注释下面一行代码,会出现空指针异常

    //e=new Exc();

    System.out.println(e.i);

    }

       

    }

       

    运行一览:

    出现异常:NullPointerException,空指针异常

       

       

       

    代码2

       

    package com.siwuxie095.exception;

       

    class Exc{

    int i=10;

    }

       

    public class ExceptionDemo01 {

       

    public static void main(String[] args) {

    Exc e=null;

    //如果注释下面一行代码,会出现空指针异常

    e=new Exc();

    int j=0;

    //除数为0,出现算术异常

    int temp=e.i/j;

    System.out.println(temp);

    }

       

    }

       

    运行一览:

    出现异常:ArithmeticException,算术异常

       

       

       

       

       

       

    2、处理异常

       

    异常格式:

       

    try 中放的是异常的语句 或 可能出现异常的语句

       

    catch 可以多个模块,对异常进行捕获

       

    finally 不管程序是否出现异常,都一定会执行

       

       

       

    代码1

       

    package com.siwuxie095.exception;

       

    class Exc{

    int i=10;

    }

       

    public class ExceptionDemo01 {

       

    public static void main(String[] args) {

    Exc e=null;

    //如果注释下面一行代码,会出现空指针异常

    e=new Exc();

    int j=0;

    int temp=1;

    try {

    //除数为0,出现算术异常

    temp=e.i/j;

    //如果可以确定捕获的异常类型

    //可以直接用 ArithmeticException 代替 Exception

    } catch (Exception e2) {

    System.out.println(e2);

    }

     

    System.out.println(temp);

    }

       

    }

       

    运行一览:

       

       

       

    代码2

       

    package com.siwuxie095.exception;

       

    class Exc{

    int a=10;

    int b=0;

    }

       

    public class ExceptionDemo01 {

       

    public static void main(String[] args) {

    int temp=0;

    Exc e=null;

    e=new Exc();

    try {

    temp=e.a/e.b;

    System.out.println(temp);

    } catch (NullPointerException e2) {

    System.out.println(e2);

    }catch (ArithmeticException e2) {

    System.out.println(e2);

    }finally {

    System.out.println("程序退出");

    }

     

     

     

    }

       

    }

       

    运行一览:

    是否注释掉:e=new Exc(); 的两种异常捕获

       

       

       

       

       

       

       

    3、常见异常

       

    1)数组越界异常:ArrayIndexOutOfBoundsException

       

    (2)数字格式化异常:NumberFormatException

       

    (3)算术异常:ArithmeticException

       

    (4)空指针异常:NullPointerException

       

    (5)类型转换异常:ClassCastException

       

       

       

       

       

    4、throws 关键字

       

    在定义一个方法的时候可以使用 throws 关键字声明,

    使用 throws 声明的方法表示此方法不处理异常,抛给

    方法的调用者处理

       

    格式:

       

       

    代码:

       

    package com.siwuxie095.exception;

       

    public class ExceptionDemo02 {

       

    public static void main(String[] args) {

    //依然需要捕获异常

    try {

    tell(10, 0);

    } catch (Exception e) {

    System.out.println(e);

    }

    }

     

    //将异常抛出,抛给调用者 main() 处理

    public static void tell(int i,int j) throws ArithmeticException {

    int temp=0;

    temp=i/j;

    System.out.println(temp);

    }

       

    }

       

    运行一览:

       

       

       

    或者:如果是主方法抛出异常,将抛给JVM进行处理

       

    package com.siwuxie095.exception;

       

    public class ExceptionDemo02 {

       

    //如果主方法中不再捕获异常,而是也抛出异常,将抛给JVM处理

    public static void main(String[] args) throws Exception{

    tell(10, 0);

    }

     

    //将异常抛出,抛给调用者 main() 处理

    public static void tell(int i,int j) throws ArithmeticException {

    int temp=0;

    temp=i/j;

    System.out.println(temp);

    }

       

    }

       

    运行一览:

    JVM处理的异常,不过建议自己 try catch 捕获异常更好

       

       

       

       

       

       

       

    5、throw 关键字

       

    throw 关键字抛出一个异常,抛出的时候直接抛出异常类的实例化对象即可

       

    代码:

       

    package com.siwuxie095.exception;

       

    public class ExceptionDemo03 {

       

    public static void main(String[] args) {

    try {

    //通过throw 抛出一个实例化对象的异常

    throw new Exception("实例化异常对象");

    } catch (Exception e) {

    //打印该异常

    System.out.println(e);

    }

    }

       

    }

       

    运行一览:

       

       

       

       

       

       

    6、自定义异常

       

    自定义异常直接继承 Exception 就可以完成自定义异常类

       

    〔自定义异常一般用于大工程,因为不知道系统抛出的异常到底在何处,

    比较难找,这时就需要自定义异常给出具体的提示〕

       

       

    代码:

       

    package com.siwuxie095.exception;

       

    //继承自Exception

    class MyException extends Exception{

    //构造方法,参数 msg 用于传递错误信息

    public MyException(String msg) {

    //通过 super() 调用 Exception 里的错误传递

    super(msg);

    }

     

     

    }

       

    public class ExceptionDemo04 {

       

    public static void main(String[] args) {

    try {

    //抛出自己的异常,并提示:自定义异常

    throw new MyException("自定义异常");

    } catch (MyException e) {

    //输出该异常

    System.out.println(e);

    }

     

    }

       

    }

       

    运行一览:

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    SQL Server数据库文件与文件组总结
    SQL Server使用sp_rename重命名约束注意事项
    LogWriter: Operating system error 21(error not found) encountered
    SQL Server的Linked Server支持使用SEQUENCE吗?
    SQL Server使用sp_spaceused查看表记录存在不准确的情况
    SQL Server死锁中的会话隔离级别为序列化(Serializable)实验测试
    SQL Server统计信息偏差影响表联结方式案例浅析
    SQL Server关于predicate、density、selectivity、cardinality名词浅析
    Oracle dblink的连接模式的关系测试总结
    MySQL系统变量sql_safe_updates总结
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6554733.html
Copyright © 2020-2023  润新知