目录

  • 目录
  • 定义
  • 语法
    • 注意:
  • 多重捕获块
  • 举例
    • 1. NullPointerException 空指针异常
    • 2. ArrayIndexOutOfBoundsException 数组下标越界异常
    • 3. ArithmeticException 数学运算异常
    • 4. ClassCastException 类型转换异常
    • 5. NumberFormatException 数字格式异常

定义

try/catch 语句用于处理代码中可能出现的错误信息。通常是程序员造成的编码错误或错别字,也可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。
如果没有try/catch 的话,就有可能出现异常导致程序崩溃,而try/catch 则可以保证程序的正常运行。
例如:当除数为0时,编译不会报错,如果没有try/catch的话,程序直接崩溃。用try/catch的话,则可以让程序运行下去,并且输出为什么出错!


语法

try/catch 语句格式如下:

try {//尝试执行的代码块
}
catch (异常类型1 异常的变量名1) { //捕获错误的代码块1
}
...
catch (异常类型2 异常的变量名2) {//捕获错误的代码块2
}
finally {//最终执行的代码块
}

注意:

catch 和 finally 语句都是可选的,但你在使用 try 语句时必须至少使用一个。catch 可以有多个,当所有的 catch 都不满足时,再执行 finally 里的代码。


多重捕获块

一个 try 代码块后面跟随多个catch代码块的情况就叫多重捕获。

  • 如果 try 代码块中发生异常,异常被抛给第一个 catch 块。
  • 如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。
  • 如果不匹配,它会被传递给第二个 catch 块。
  • 如此,直到异常被捕获或者通过所有的 catch 块。

该实例展示了怎么使用多重try/catch。

try {file = new FileInputStream(fileName);x = (byte) file.read();}catch(IOException i) {i.printStackTrace();return -1;}catch(FileNotFoundException f) {f.printStackTrace();return -1;}

举例

下面列出几种常见情况:

1. NullPointerException 空指针异常

出现该异常的原因在于某个引用为null,但却调用了它的某个方法,这时就会出现空指针异常。

try{int a[] = null;System.out.println(a[0]);}catch(NullPointerException e){System.out.println("Exception thrown  :" + e);}

2. ArrayIndexOutOfBoundsException 数组下标越界异常

用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。

try{int a[] = new int[2];System.out.println("Access element three :" + a[3]);}catch(ArrayIndexOutOfBoundsException e){System.out.println("Exception thrown  :" + e);}

3. ArithmeticException 数学运算异常

当出现异常的运算条件时,抛出此异常。例如,一个整数”除以零”时,抛出此类的一个实例。

try{int a = 10;int b = 0;int c = a/b;System.out.println(c);}catch(ArrayIndexOutOfBoundsException e){System.out.println("Exception thrown  :" + e);}

4. ClassCastException 类型转换异常

当试图将对象强制转换为不是实例的子类时,抛出该异常。

5. NumberFormatException 数字格式异常

当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。

try/catch 的解释与用法相关推荐

  1. Asp.Net中几种标记符号解释及用法

    Asp.Net中几种标记符号: < %=...%>< %#... %>< % %>< %@ %>解释及用法 1.< %#... %>: 是在 ...

  2. ML之sklearn:sklearn.metrics中常用的函数参数(比如confusion_matrix等 )解释及其用法说明之详细攻略

    ML之sklearn:sklearn.metrics中常用的函数参数(比如confusion_matrix等 )解释及其用法说明之详细攻略 目录 sklearn.metrics中常用的函数参数 con ...

  3. html5变动标签新写法,Html5新标签解释及用法

    Html5新标签解释及用法 发布时间:2012-02-17 22:50:45   作者:佚名   我要评论 HTML 5 是一个新的网络标准,目标在于取代现有的 HTML 4.01, XHTML 1. ...

  4. Asp.Net中几种相似数据绑定标记符号的解释及用法

    Asp.Net中几种相似数据绑定标记符号的解释及用法1.<%#... %> 是在绑定控件DataBind()方法执行时被执行,用于数据绑定 如: <%# Container.Data ...

  5. lr 中cookie的解释与用法

    Loadrunner 中 cookie 解释与用法 loadrunner 中与 cookie 处理相关的常用函数如下: web_add_cookie(): 添加新的 cookie 或者修改已经存在的 ...

  6. C++异常处理:try,catch,throw,finally的用法

    C++异常处理:try,catch,throw,finally的用法 参考文章: (1)C++异常处理:try,catch,throw,finally的用法 (2)https://www.cnblog ...

  7. Linux DTS中和中断相关属性的解释和用法

    Linux DTS中和中断相关属性的解释和用法 前言 中断控制器的硬件结构(基于Exynos4412 ARMv7) GIC Interrupt Combiner DTS对中断的描述 DTS中断实例解析 ...

  8. 掌握try catch finally的基本用法 1216

    掌握try catch finally的基本用法

  9. Asp.Net中几种相似的标记符号:解释及用法 还有许多细节

    1.Asp.Net中几种相似的标记符号: < %=...%>< %#... %>< % %>< %@ %>解释及用法 答: < %#... %&g ...

最新文章

  1. 高级工程师必须精通的七种武器(摘录)
  2. JS对象变量、闭包的一些问题
  3. Hadoop学习之路一 Single Node Setup
  4. 查找域内所有的Windows Server 2012 R2的服务器,并区分出哪些是物理机,那些是虚拟机...
  5. php中的__FUNCTION__
  6. 2021最新4合1即时通讯IM源码-服务端+PC+WEB+安卓+IOS完整原生源码
  7. Linux01-学习记录
  8. win32获取当前运行程序的内存地址_一个lock锁,就可以分出程序员对问题处置方式水平的高中低...
  9. 多重搜索算法_Android多重搜寻,例如传送,搜寻联络人
  10. stm32,51单片机,AVR单片机( arduino )到底选哪个比较好
  11. 2010年是一道坎,也是一座桥
  12. HDU 3785 寻找大富翁
  13. 【错误】函数调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。
  14. 推荐一款免费开源的pdf编辑器
  15. 数据挖掘的技术都有哪些?
  16. 利用@media与@media screen进行响应式布局
  17. 服务器网卡灯不亮——解决方法
  18. Shiro和Spring Security的简单对比
  19. 如何选择隔离电源还是非隔离电源?
  20. Android Studio 使用Profiler时App崩溃闪退

热门文章

  1. 根据入职时间计算工龄
  2. 解决Unknown column XXX in ‘field list‘问题
  3. 蓝牙Controller框架梳理
  4. win10系统升级后触摸板点击没反应
  5. 进击的DApp:区块链上将长出怎么样的新事物?
  6. 快被95后新人整疯:啥都不会,情商低,乱怼人!
  7. 45.帧缓冲设备(Framebuffer),LCD
  8. vue-echarts绘制地图轮廓
  9. PD的CDM模型中的三种实体关系
  10. 沪股通、深股通、港股通、陆股通