Java中的异常处理
来源:互联网 发布:电商美工培训 编辑:程序博客网 时间:2024/06/07 02:24
异常就是抛出和捕获的过程,也就是try和catch,当保护代码块try中出现异常时,catch中的内容就会被检查。以下内容为参考了一些博客后加上自己理解的一些记录。
一、:什么是异常
二、:java中异常的分类
Java中的异常是有很多的,不过可大体上分为三类:检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个
不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误
就发生了,它们在编译也检查不到的。
所有的异常类是从java.lang.Exception类继承的子类。Exception类是Throwable类的子类。除了Exception类外,Throwable还有一个子类Error 。Java程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。
异常类有两个主要的子类:IOException类和RuntimeException类。
Exception它又分为两种CheckedException(受捡异常),UncheckedException(不受检异常)。其中CheckException发生在编译阶段,必须要使用try…catch(或者throws)否则编译不通过。而不受检测的异常发生在运行期,具有不确定性,主要是由于程序的逻辑问题所引起的。IOException是编译异常,RuntimeException是运行异常。
三、:throw和throws
对于我这样的初学者而言,这两个有点傻傻分不清,那就来从原理和使用方式上来辨析一下package TwoWeek;public class Exception1 {public static void main(String args[]){try{ System.out.println(9/0); }catch(Exception e){System.out.println(e.toString());}finally{System.out.println("继续执行");}}}
输出结果:java.lang.ArithmeticException: / by zero<span style="white-space:pre"></span> 继续执行
四、:自定义异常
Java确实给我们提供了非常多的异常,但是异常体系是不可能预见所有的希望加以报告的错误,所以Java允许我们自定义异常来表现程序中可能会遇到的特定问题,总之就是一句话:我们不必拘泥于Java中已有的异常类型。所有异常都必须是Throwable的子类。
如果希望写一个检查性异常类,则需要继承Exception类。
如果你想写一个运行时异常类,那么需要继承RuntimeException 类。
Java自定义异常的使用要经历如下四个步骤:
1、定义一个类继承Throwable或其子类。
2、添加构造方法(当然也可以不用添加,使用默认构造方法)。
3、在某个方法类抛出该异常。
4、捕捉该异常。
package TwoWeek;class MyException extends Exception{public MyException(String str){// 将异常的信息上传了super(str);}public void display(){System.out.println("哈哈");}}public class ExceptionSelf{public static void main(String args[]){ExceptionSelf test = new ExceptionSelf();try { test.display(0); } catch (MyException e) { System.out.println(e.toString()); } }public void display(int i) throws MyException{ if(i == 0){ throw new MyException("这里有异常了"); } else{ System.out.println(9/i); } }}
五、:异常方法
下面的列表是Throwable 类的主要方法:也就是其子类中都可以使用的。1、public String getMessage() 返回发生异常的详细信息。
2、public Throwable getCause() 返回异常的原因。
3、public String toString() 返回类的串级名字。
4、public Stack printStackTrance() 打印错误输出流。
六、:总结
1、尽量减少try块,不能使用一个来包含所有的异常2、充分利用所有的finally关键字,保证所有的资源都被释放
3、catch语言应该尽量指定具体的异常类型
4、要对捕获的异常做处理,不能简单的打印。
- Java中的异常处理
- JAVA中的异常处理
- Java中的异常处理
- JAVA中的异常处理
- java中的异常处理
- Java中的异常处理
- java中的异常处理
- Java中的异常处理
- java中的异常处理
- Java中的异常处理
- java中的异常处理
- java中的异常处理
- Java中的异常处理
- Java中的异常处理
- Java中的异常处理
- java中的异常处理
- Java中的异常处理
- JAVA中的异常处理
- escape() VS encodeURI() VS encodeURIComponent()
- STL学习_hash_table源码分析
- java Integer == 比较
- 第一个NDK工程--hello ndk
- IOS开发-XCode常用快捷键整理
- Java中的异常处理
- Hystrix学习笔记一
- 在 Linux 上安装 SQLite
- 回溯算法:八皇后问题
- Java Map集合遍历
- Shell脚本: Mysql自动创建库和用户_20160607_七侠镇莫尛貝
- Jmeter关联,正则表达式提取器使用
- 用ListView来展示自定义圆形控件(加载的是本地图片)
- PPT用宏插入不同背景图片