Java基础——异常(Error、Exception)

编程入门 行业动态 更新时间:2024-10-10 21:27:05

Java基础——<a href=https://www.elefans.com/category/jswz/34/1771210.html style=异常(Error、Exception)"/>

Java基础——异常(Error、Exception)

异常(Throwable)

Java对问题进行了对象的封装,Java对不正常情况进行描述后的对象体现,这就是Throwable类

方法摘要
 StringgetMessage() 
          返回此 throwable 的详细消息字符串。(异常信息)
 voidprintStackTrace() 
          将此 throwable 及其追踪输出至标准错误流。(异常名称:异常信息,异常出现的位置)
 StringtoString() 
          返回此 throwable 的简短描述。(异常名称:异常信息)
 voidprintStackTrace(PrintStream s) 
          将此 throwable 及其追踪输出到指定的输出流。(设置输出的位置,定义打印流)
 voidprintStackTrace(PrintWriter s) 
          将此 throwable 及其追踪输出到指定的 PrintWriter。(设置输出的位置,定义打印流)

1.Error(严重问题)

  要点:由于问题过于严重,对于Error一般不编写针对性的代码对其进行处理

2.Exception(能够解决的问题)

2.1 处理方式(try catch:自己处理)

try
{需要检测的代码;
}
catch(异常类 变量)
{处理语句的代码:(处理方式);//检测到几个异常,就catch几个异常
}
finally
{一定会执行的语句,一般都会放关闭资源的代码
}

(1)注意:<1>.哪里有异常哪里就会产生一个抛出异常对象。不编写try的话,JVM会启动默认的异常处理机制

                   <2>.try内出现异常对象后,其下边的语句不再 执行

                   <3>.未出现异常,catch中语句不会执行

(2)正确做法:应该把异常信息保存在硬盘内的一个日志文件内

(3)finally代码块中的代码一定执行

2.2 处理方式(throws:声明问题,让他人处理)

修饰符 返回值类型 函数名(参数列表)throws 异常名,异常名...{方法体
}

(1)重点:注意问题的封装,只把别人认识能解决的异常声明给别人,别人不清楚的问题要把自己处理问题,把结果发送给对方。知道何时处理问题,何时抛出问题!

2.3 自定义异常

(1)意义:定义Java没有的异常类,因为这个异常类只适用于本程序 (2)抛出:因为Java不识别自定义的异常,所以需要我们自行抛出定义的异常类。格式: thorw new 异常类名() (3)Throwable类基本组成,代码如下
class Throwable implements Serializable //异常超类
{private String detailMessage;//成员异常信息变量public Throwable(String message){detailMessage = message}public String getMessage(){return detailMessage;}
}
    所以自定义异常继承Exception只要写下构造函数即可,其它成员都可以通过继承得到,代码如下
class MinusException extends Exception//自定义异常类
{MinusException(String mes){//只需定义异常类的构造函数,因为其他成员已经继承super(mes);}
}class demo
{public static int divide(int a,int b)throws MinusException{if(b<0)throw new MinusException("除以了负数");//只要除以负数将抛出此自定义异常return a/b;}
}class java
{public static void main(String[] args)throws Exception{demo.divide(4,-1);}
}

2.4 RuntimeException(运行时异常)

(1)知识:抛异常不单单只能抛自定义异常,也可以抛出Java定义的异常,而且可以自定义选择构造器

(2)特点:抛出RuntimeException异常或者其子类时,函数名上不用声明;调用者不用处理,编译一样都通过

2.5 知识点

(1) 当父类方法抛出异常,子类复写该方法要么不抛异常,要么抛出父类异常或者父类异常的子类 (2) 父类方法无异常,子类方法也不能抛出异常,只能内部解决 (3)当执行了System.exit(0);finally将不会执行 (4) 异常存在的意义:当问题处理代码和正常流程代码堆积在一起时,阅读起来很痛苦费力。异常的出现能让两者相分离,便于阅读 (5)return、continue、break、throw new 异常名()下边不能跟语句,因为根本执行不到

3.常见异常

ArithmeticException数学算法异常
NullPointerException空指针异常
ArrayIndexOutOfBoundsException数组角标越界异常
StringIndexOutOfBoundsException字符串角标越界异常
InterruptedException中断异常
IllegalArgumentException无效参数异常
ClassCastException类型转换异常
IllegalThreadException线程状态异常(多次开启同一个线程,不管此线程是否消亡)
NumberFormatException数字格式异常(字符串转换为Integer传入非法数值时抛出)
ConcurrentModitcationException并发访问异常,修改异常(在迭代器中用迭代器方法与集合方法同时操作集合元素)
NoSuchElementException没有这样的元素异常(LinkedList为空时调用getFirst相关方法)
IOException传统的IO异常
FileNotFoundException文件未找到异常
NotSerializableException某个要序列化的对象不能实现异常
ClassNotFoundException类没有找到异常(读取序列化的对象,发现类不存在。当发现抛出此异常显示的是你没见过的类,可以确定是你们导入开发环境所致)
UnknownHostException未知主机异常(建立IP地址对象时抛出的异常)
SocketException建立Socket相关对象时
BindException当建立了重复端口的Socket的时

更多推荐

Java基础——异常(Error、Exception)

本文发布于:2024-02-26 02:57:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1701135.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:异常   基础   Java   Error   Exception

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!