博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaSE学习总结(八)—— 异常处理(Exception)
阅读量:6075 次
发布时间:2019-06-20

本文共 5354 字,大约阅读时间需要 17 分钟。

一、理解异常及异常处理的概念

异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。

异常不是错误

程序中关键的位置有异常处理,提高程序的稳定性

二、掌握Java异常处理机制

 Java的异常处理是通过5个关键字来实现的

try:尝试,把有可能发生错误的代码放在其中,必须有

catch:捕获,当发生异常时执行

finally:最终,不管是否有异常都将执行

throw:抛出,引发异常

throws:抛出多个,声明方法将产生某些异常

 

三、掌握try 、catch 、 finally 处理异常

 3.1、try..catch

package com.zhangguo.chapter6.d1;import java.util.Scanner;public class Exception1 {    public static void main(String[] args) {                Scanner input=new Scanner(System.in);        //int i=input.nextInt();        int i=Integer.parseInt(input.next());        System.out.println("您输入的是:"+i);        System.out.println("程序结束了");    }}

异常处理:

package com.zhangguo.chapter6.d1;import java.util.Scanner;public class Exception1 {    public static void main(String[] args) {        try {            Scanner input = new Scanner(System.in);            int i = Integer.parseInt(input.next());            System.out.println("您输入的是:" + i);        } catch (Exception exp) {            System.out.println("发生异常了:" + exp.getMessage());        }        System.out.println("程序结束了");    }}

结果:

3.2、try..catch..finally

finally在任何情况下都将执行,正常时会执行,不正常也会执行

package com.zhangguo.chapter6.d1;import java.util.Scanner;public class Exception1 {    public static void main(String[] args) {        try {            Scanner input = new Scanner(System.in);            int i = Integer.parseInt(input.next());            System.out.println("您输入的是:" + i);        } catch (Exception exp) {            System.out.println("发生异常了:" + exp.getMessage());        }finally {            System.out.println("输入结束");        }        System.out.println("程序结束了");    }}

结果:

1

您输入的是:1
输入结束
程序结束了

如果用户输入是的xyz

四、掌握throw 抛出异常、throws 声明异常

 4.1、java中常用的异常

//算术异常ArithmeticExecption//空指针异常类NullPointerException//类型强制转换异常ClassCastException//数组负下标异常NegativeArrayException//数组下标越界异常ArrayIndexOutOfBoundsException//违背安全原则异常SecturityException//文件已结束异常EOFException//文件未找到异常FileNotFoundException//字符串转换为数字异常NumberFormatException//操作数据库异常SQLException//输入输出异常IOException//方法未找到异常NoSuchMethodException//抽象方法错误,当应用试图调用抽象方法时抛出 java.lang.AbstractMethodError//断言错误,用来指示一个断言失败的情况java.lang.AssertionError//类循环依赖错误,若检测到类之间循环依赖则抛出该异常java.lang.ClassCircularityError//类格式错误java.lang.ClassFormatError//错误基类,标识严重程序运行问题,不应被应用程序捕获的反常情况java.lang.Error//非法访问错误,违反域或方法的可见性声明java.lang.IllegalAccessError//不兼容的类变化错误,当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常java.lang.IncompatibleClassChangeError//实例化错误,构造一个抽象类或者接口时抛出该异常java.lang.InstantiationError//内部错误java.lang.InternalError//链接错误java.lang.LinkageError//未找到类定义错误,找不到该类的定义时抛出该错误java.lang.NoClassDefFoundError//域(成员变量,字段)不存在错误java.lang.NoSuchFieldError//方法不存在错误java.lang.NoSuchMethodError//内存不足错误java.lang.OutOfMemoryError//堆栈溢出错误,如递归调用的层次太深java.lang.StackOverflowError//线程已结束java.lang.ThreadDeath//未知错误java.lang.UnknownError//未满足的链接错误java.lang.UnsatisfiedLinkError//不支持的类版本错误java.lang.UnsupportedClassVersionError//验证错误java.lang.VerifyError//虚拟机错误java.lang.VirtualMachineError//算术条件异常,如整数除零java.lang.ArithmeticException//数组索引越界异常java.lang.ArrayIndexOutOfBoundsException//数组存储异常,存放非数组声明类型java.lang.ArrayStoreException//类型转换异常java.lang.ClassCastException//找不到类异常java.lang.ClassNotFoundException//克隆不支持异常,如没有实现Cloneable接口java.lang.CloneNotSupportedException//枚举常量不存在异常java.lang.EnumConstantNotPresentException//根异常java.lang.Exception//非法访问异常java.lang.IllegalAccessException//非法的监控状态异常java.lang.IllegalMonitorStateException//非法的状态异常java.lang.IllegalStateException//非法的线程状态异常java.lang.IllegalThreadStateException//索引越界异常java.lang.IndexOutOfBoundsException//实例化异常java.lang.InstantiationException//被中断异常java.lang.InterruptedException//数组大小为负值异常java.lang.NegativeArraySizeException//属性不存在异常,当访问某个类的不存在的属性时抛出该异常java.lang.NoSuchFieldException//方法不存在异常java.lang.NoSuchMethodException//空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常java.lang.NullPointerException//数字格式异常java.lang.NumberFormatException//运行时异常java.lang.RuntimeException//安全异常java.lang.SecurityException//字符串索引越界异常java.lang.StringIndexOutOfBoundsException//类型不存在异常java.lang.TypeNotPresentException//不支持的方法异常java.lang.UnsupportedOperationException//Jsp页面异常javax.servlet.jsp.JspException//JSP引擎解析异常org.apache.jasper.JasperException//Servlet异常javax.servlet.ServletException//对象已被删除异常org.hibernate.ObjectDeletedException
常用的异常

 

4.2、throw..throws

package com.zhangguo.chapter6.d1;public class Exception2 {    public static void main(String[] args) {                try {            System.out.println(div(30,3));        } catch (Exception e) {            //输出异常的堆栈信息            e.printStackTrace();        }                try {            System.out.println(div(3,0));        } catch (Exception e) {            System.out.println(e.getMessage());        }            }        //throws 声明方法将可能抛出异常    public static int div(int n1,int n2) throws Exception{        if(n2==0){            //抛出异常            throw new Exception("除数不能为零");        }        return n1/n2;    }}

运行结果:

五、掌握自定义异常

 

public class ArithmeticException extends RuntimeException {    private static final long serialVersionUID = 2256477558314496007L;    /**     * Constructs an {
@code ArithmeticException} with no detail * message. */ public ArithmeticException() { super(); } /** * Constructs an {
@code ArithmeticException} with the specified * detail message. * * @param s the detail message. */ public ArithmeticException(String s) { super(s); }}

 

 

 

 

 

转载地址:http://nxngx.baihongyu.com/

你可能感兴趣的文章
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>
一步一步学习SignalR进行实时通信_7_非代理
查看>>
AOL重组为两大业务部门 全球裁员500人
查看>>
字符设备与块设备的区别
查看>>
为什么我弃用GNOME转向KDE(2)
查看>>
Redis学习记录初篇
查看>>
爬虫案例若干-爬取CSDN博文,糗事百科段子以及淘宝的图片
查看>>
Web实时通信技术
查看>>
第三章 计算机及服务器硬件组成结合企业运维场景 总结
查看>>
IntelliJ IDEA解决Tomcal启动报错
查看>>
默认虚拟主机设置
查看>>
七周五次课(1月26日)
查看>>
Linux系统一些系统查看指令
查看>>
php中的短标签 太坑人了
查看>>
[译] 可维护的 ETL:使管道更容易支持和扩展的技巧
查看>>
### 继承 ###
查看>>
数组扩展方法之求和
查看>>
astah-professional-7_2_0安装
查看>>