Java中如何通过实例解析异常处理机制及其应用场景?

2026-05-26 07:581阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1310个文字,预计阅读时间需要6分钟。

Java中如何通过实例解析异常处理机制及其应用场景?

本文实例讲述了Java异常处理原理与用法。分享给广大读者参考,具体如下:

内容概述:- 异常的介绍- 处理异常- 抛出异常- 异常的继承关系- 首发日期:2018-03-26

异常:异常是程序运行中发生的错误,它表示程序遇到了无法预料的异常情况。

处理异常:处理异常通常通过try-catch语句实现。try块中放置可能抛出异常的代码,catch块则捕获并处理这些异常。

抛出异常:当程序遇到无法处理的错误时,可以使用throw语句抛出一个异常。

异常的继承关系:Java中的异常分为两大类:检查型异常(checked exceptions)和非检查型异常(unchecked exceptions)。检查型异常必须被显式捕获或声明抛出,而非检查型异常(包括运行时异常)不需要。

Java中如何通过实例解析异常处理机制及其应用场景?

首发日期:本文首次发布于2018年3月26日。

本文实例讲述了Java异常处理原理与用法。分享给大家供大家参考,具体如下:

本文内容:

  • 异常的介绍
  • 处理异常
  • 断言

首发日期:2018-03-26


异常:

  • 异常是程序运行中发生的错误,比较常见的比如“除零异常”,如果一个除数为零,那么会发生这个异常
  • 异常会影响程序的正常运行,所以我们需要处理异常。
  • 所有的异常类是从 java.lang.Exception 类继承的子类。 异常类有两个主要的子类:IOException 类和 RuntimeException 类。

常见异常:

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组下标越界异常:ArrayIndexOutOfBoundsException

输入输出异常:IOException


处理异常:

  • 异常的捕获:try…catch…finally

    • 格式:
    • try代码块:里面放的是异常可能发生的代码
    • catch代码块:进行捕获异常的操作
      • e是捕获的异常类对象,直接打印会得到字符串结果(包含异常的线程、类型、位置)
      • e.getMessage():只返回异常的类型+原因
      • e.printStackTrace(): 异常的类型+原因+位置
      • e.toString():异常的类型+原因
    • finally:放的是无论发生异常与否都会执行的代码
    • 异常类如果无法确定类型而准确捕获时,可以捕获成所有异常类的父类Exception
    • 当异常捕获成功后,try…catch…finally代码块后面的代码可以执行成功。

public class Demo { public static void main(String[] args) { // int a=10/0; try{ int a=10/0; }catch(ArithmeticException e) { System.out.println("run in ArithmeticException "+e); //run in ArithmeticException java.lang.ArithmeticException: / by zero } catch (Exception e) { System.out.println(e); }finally { System.out.println("最终执行的");//最终执行的 } } }

  • 异常的声明:

throws用于声明异常,声明函数可能发生的异常。

  • 抛出异常:

throw用于手动抛出异常,可以抛出自定义异常信息:throw 异常类型(异常信息)

public class Demo2 { static int div(int a,int b) throws ArithmeticException{ if (b==0){ throw new ArithmeticException("发生除零异常了!"); } return a/b; } public static void main(String args[]) { try { System.out.println(div(2,0)); }catch(ArithmeticException e) { System.out.println(e.getMessage());//发生除零异常了! }finally { System.out.println("in finally");//in finally } System.out.println("after finally");//after finally } }

一般对于不想在函数中处理异常时,一般采用异常抛出处理(throw throws);否则使用try…catch…finally捕获异常。

自定义异常:

有时候没有定义我们想要的异常(比如我们MYSQL连接异常),那么我们可以自定义异常。

  • 所有异常都必须是 Throwable 的子类。
  • 如果希望写一个检查性异常类(是一些编译器会帮忙检查的异常),则需要继承 Exception 类。
  • 如果你想写一个运行时异常类(异常比如说,数组下标越界和访问空指针异常),那么需要继承 RuntimeException 类。

class MyException extends Exception{ public MyException() {} public MyException(String msg) { super(msg); } } public class Demo3 { static int div(int a,int b) throws MyException { if (b==0){ throw new MyException("发生异常了!"); } return a/b; } public static void main(String args[]) { try { System.out.println(div(2,0)); }catch(Exception e) { System.out.println(e);//异常.MyException: 发生除零异常了! } } }


断言:

  • assertion(断言)在软件开发中是一种常用的调试方式
  • 断言一般是判断条件是否符合来决定程序是否继续执行的。
  • 断言的开启:eclipse、myeclipse的assert默认是关闭,想开启assert需要在设置perferences-》Java-》installed jres中配置一下虚拟机参数,配置成-ea或者-enableassertions
  • Java中使用assert来定义断言:格式:assert [boolean 表达式]

public class Demo { public static void main(String[] args) { Boolean food=false; System.out.println("准备开始吃饭"); assert food; System.out.println("饭来了"); } }

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

本文共计1310个文字,预计阅读时间需要6分钟。

Java中如何通过实例解析异常处理机制及其应用场景?

本文实例讲述了Java异常处理原理与用法。分享给广大读者参考,具体如下:

内容概述:- 异常的介绍- 处理异常- 抛出异常- 异常的继承关系- 首发日期:2018-03-26

异常:异常是程序运行中发生的错误,它表示程序遇到了无法预料的异常情况。

处理异常:处理异常通常通过try-catch语句实现。try块中放置可能抛出异常的代码,catch块则捕获并处理这些异常。

抛出异常:当程序遇到无法处理的错误时,可以使用throw语句抛出一个异常。

异常的继承关系:Java中的异常分为两大类:检查型异常(checked exceptions)和非检查型异常(unchecked exceptions)。检查型异常必须被显式捕获或声明抛出,而非检查型异常(包括运行时异常)不需要。

Java中如何通过实例解析异常处理机制及其应用场景?

首发日期:本文首次发布于2018年3月26日。

本文实例讲述了Java异常处理原理与用法。分享给大家供大家参考,具体如下:

本文内容:

  • 异常的介绍
  • 处理异常
  • 断言

首发日期:2018-03-26


异常:

  • 异常是程序运行中发生的错误,比较常见的比如“除零异常”,如果一个除数为零,那么会发生这个异常
  • 异常会影响程序的正常运行,所以我们需要处理异常。
  • 所有的异常类是从 java.lang.Exception 类继承的子类。 异常类有两个主要的子类:IOException 类和 RuntimeException 类。

常见异常:

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组下标越界异常:ArrayIndexOutOfBoundsException

输入输出异常:IOException


处理异常:

  • 异常的捕获:try…catch…finally

    • 格式:
    • try代码块:里面放的是异常可能发生的代码
    • catch代码块:进行捕获异常的操作
      • e是捕获的异常类对象,直接打印会得到字符串结果(包含异常的线程、类型、位置)
      • e.getMessage():只返回异常的类型+原因
      • e.printStackTrace(): 异常的类型+原因+位置
      • e.toString():异常的类型+原因
    • finally:放的是无论发生异常与否都会执行的代码
    • 异常类如果无法确定类型而准确捕获时,可以捕获成所有异常类的父类Exception
    • 当异常捕获成功后,try…catch…finally代码块后面的代码可以执行成功。

public class Demo { public static void main(String[] args) { // int a=10/0; try{ int a=10/0; }catch(ArithmeticException e) { System.out.println("run in ArithmeticException "+e); //run in ArithmeticException java.lang.ArithmeticException: / by zero } catch (Exception e) { System.out.println(e); }finally { System.out.println("最终执行的");//最终执行的 } } }

  • 异常的声明:

throws用于声明异常,声明函数可能发生的异常。

  • 抛出异常:

throw用于手动抛出异常,可以抛出自定义异常信息:throw 异常类型(异常信息)

public class Demo2 { static int div(int a,int b) throws ArithmeticException{ if (b==0){ throw new ArithmeticException("发生除零异常了!"); } return a/b; } public static void main(String args[]) { try { System.out.println(div(2,0)); }catch(ArithmeticException e) { System.out.println(e.getMessage());//发生除零异常了! }finally { System.out.println("in finally");//in finally } System.out.println("after finally");//after finally } }

一般对于不想在函数中处理异常时,一般采用异常抛出处理(throw throws);否则使用try…catch…finally捕获异常。

自定义异常:

有时候没有定义我们想要的异常(比如我们MYSQL连接异常),那么我们可以自定义异常。

  • 所有异常都必须是 Throwable 的子类。
  • 如果希望写一个检查性异常类(是一些编译器会帮忙检查的异常),则需要继承 Exception 类。
  • 如果你想写一个运行时异常类(异常比如说,数组下标越界和访问空指针异常),那么需要继承 RuntimeException 类。

class MyException extends Exception{ public MyException() {} public MyException(String msg) { super(msg); } } public class Demo3 { static int div(int a,int b) throws MyException { if (b==0){ throw new MyException("发生异常了!"); } return a/b; } public static void main(String args[]) { try { System.out.println(div(2,0)); }catch(Exception e) { System.out.println(e);//异常.MyException: 发生除零异常了! } } }


断言:

  • assertion(断言)在软件开发中是一种常用的调试方式
  • 断言一般是判断条件是否符合来决定程序是否继续执行的。
  • 断言的开启:eclipse、myeclipse的assert默认是关闭,想开启assert需要在设置perferences-》Java-》installed jres中配置一下虚拟机参数,配置成-ea或者-enableassertions
  • Java中使用assert来定义断言:格式:assert [boolean 表达式]

public class Demo { public static void main(String[] args) { Boolean food=false; System.out.println("准备开始吃饭"); assert food; System.out.println("饭来了"); } }

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。