异常
来源:互联网 发布:淘宝直通车入门教程 编辑:程序博客网 时间:2024/06/06 03:31
一,异常的概念
在程序的运行时候,经常会出现一些意外的情况,这些意外会导致程序出错或者崩溃,从而影响正常的执行。Java中,将这些程序意外称为异常,出现异常时的处理称为异常处理。当异常发生时,系统会将异常封装成一个异常对象抛出。当JVM遇到异常时就会自动停止运行。
二,异常的分类
可以发现,所有的异常都继承自java.lang.Throwable类,Throwable类有两个直接的子类:Error类和Exception类。
Error类,是java应用程序本身无法恢复的严重错误,应用程序不需要捕获、处理这些严重的错误。当程序发生这种严重的错误是,通常的做法是通知用户并中止程序的执行。
Exception类,是由java应用程序抛出和处理的非严重错误,称之为异常。异常有可分为运行时异常(RuntimeException)和非运行时异常(CheckedException)两种。
RuntimeException,运行时异常即程序运行时抛出的异常,不要求程序员在编程的时候必须对这些异常进行处理,也能编译通过。
CheckedException,检查时异常又称为非运行时异常,这样的异常要求程序员必须在编程的时候进行处理,否则编译不会通过。
三、异常的处理
异常的处理方式:try….catch和try….catch….finally
异常对象的常用处理方法:printStackTrack(),用于输出异常的堆栈信息,其中堆栈信息包括程序运行到当前类的执行流程。getMessage(),用于返回异常详细信息的字符串。
public static void main(String[] args) {// fun1(); fun2(); } //try...catch演示 public static void fun1(){ try { //将可能出现异常的代码放到try代码块中 int x = 5 / 0; } catch (Exception e) { //用于捕获发生的异常 //捕获到异常的处理程序 //异常对象的两种常用的处理方法 e.printStackTrace(); //1.输入异常的堆栈信息// e.getMessage(); //2.返回异常详细信息的字符串 } } //try...catch...finally public static void fun2(){ try{ int arr[] = {5,89,23}; System.out.println(arr[3]); }catch (Exception e){ System.out.println("捕获异常...."); }finally{ //finally中的语句不管是否发生异常都会执行的 System.out.println("finally..."); } }
四,异常的声明与抛出
在java中可以使用throw关键字抛出一个异常。throw一般在方法体内部使用。
声明方法抛出异常,当方法本身不知道或者不愿意处理某个可能抛出的异常时,可以选用throws关键字将该异常提交给调用该方法的方法进行处理。一般在方法体外部使用。
public static void main(String[] args) {// fun1(); //fun2会抛出异常,main方法要对它进行处理 try { fun2(); } catch (Exception e) { System.out.println("main...."); } } //使用throw关键字抛出异常 public static void fun1(){ try { System.out.println("测试"); throw new Exception(); //抛出异常对象 } catch (Exception e) { System.out.println("捕获到异常..."); }finally{ System.out.println("finally..."); } } //使用throws关键字抛出异常 public static void fun2() throws Exception{ //抛出异常 System.out.println("fun2..."); }
五、自定义异常类
自定义异常类,就是程序员自己定义异常类。当Java类库中的异常不能满足要求时,就可以自己定义异常。
在自定义异常类时,该类要继承Exception类。
//自定义异常类class AgeException extends Exception{ private int age; public AgeException(int age) { this.age = age; } public void show(){ System.out.println(age+":年龄设置不合理.."); }}public static void main(String[] args) { int age = 156; try { if(age < 0 || age > 150){ //抛出异常 throw new AgeException(age); } } catch (AgeException e) { //捕获异常并处理异常 e.show(); }}
- 异常
- 异常!
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 使用IKVM将JAR包转化成DLL库
- 高斯滤波
- c#中英字节方法
- html的img的src为空处理,避免谷歌浏览器有边框
- mysql的主从复制
- 异常
- HDU
- ubuntu安装ssh及配置静态ip
- zookeeper运维
- 记录机器学习有关的网站和资源
- Android基础:Fragment,看这篇就够了
- Pyqt5+matplotlib+opencv实现图像直方图操作
- Jira的 Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'错误的解决 原创 2
- centos7 connect: Network is unreachable