黑马程序员--异常
来源:互联网 发布:淘宝订单清洗期几天 编辑:程序博客网 时间:2024/06/06 17:32
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
学习基础过程中经常的遇到的异常总结:
异常:程序出现了不正常的情况。
异常的体系
Throwable
Error:严重 问题,通常出现重大问题如:运行的类不存在或者内存溢出等。是不需要处理的。
一般这种情况是需要修改代码的。
这儿的处理指的是(try{}catch(){}或者throws),出现error这样严重问题的时候
靠处理的方式是解决不了的,必须找出那个地方犯了这么严重的错误,然后修改代码,改正确了之后,
程序才能够运行起来,否则程序绝对运行不起来。
Exception:不严重
1:编译期间:这个是我们需要处理的。(Exception下面 非RuntimeException 的异常)
处理异常的方式有两种:
1)声明异常(就是抛出异常)在方法声明的后面(即大括号前面):throws 异常类型,不明确要怎么处理的时候
2)try{
编译期异常代码
}catch(异常类名 变量名){
异常处理代码。
}
2:运行期间:这个是我们不需要处理,但是也可以处理 (RuntimeException下的异常)
1)如果不处理,java就会用jvm会采用自动的处理方式,
它就把异常的类型,原因,位置直接显示在了控制台。并且退出当前线程(可以理解为退出虚拟机)
同时后面的代码是不能执行的。
2)如果处理, 我们会采用try{}catch(){}
try{
可能发生问题的代码。
}catch(异常类名 变量名){
异常处理代码。
}
①:一个代码中,有多个问题,怎么解决呢?
A:一个个用异常处理方案解决。(也就是写多个try{}catch(){})
B:针对所有问题,写一个try...catch代码。
try{}catch(){}catch(){}...
针对多个异常,写一个try的代码,catch里面会不会有顺序问题呢?
*如果异常是平级关系,没有顺序问题。
*如果异常存在着子父关系,父一定要放在最后。
写多个catch(){}我们觉得很麻烦这时候就有了JDK7的新特性
JDK7新特性:多个catch用一个catch替代。 不是说多个catch的内容,用一个Exception处理。
格式:
catch(异常1 | 异常2 | 异常3 ... 变量名){}
②:我们一直在处理异常的时候都是打印的一句话,虽然我们提示了有错误,但是告诉开发人员是哪一行代码出错了吗?
告诉开发人员是哪个异常了吗?没有吧? 那这样的话,不利于开发人员对代码进行维护,所以我们就有了
标准的异常catch代码,既能打印出异常消息,显示出哪一行出的错,又能不影响后面的代码执行
首先介绍:Throwable中的方法:
public String getMessage():返回的是异常的消息字符串。
public String toString():返回异常的简单描述信息。
全路径类名 : 消息字符串
public void printStackTrace():把错误信息显示在控制台。
学完了printStackTrace()后,就学习了catch标准代码
try{
可能有问题的代码
}catch(异常类名 变量名){
变量名.printStackTrace();
}finally{
释放资源代码。(数据库,IO)
}
3)如果处理运行期异常,我们还可以采用Throws 抛出异常,但是我们一般不用
编译期异常:Exception下面 非RuntimeException 的异常
运行期异常:RuntimeException下的异常
3:自定义异常
1)先定义一个类
2)继承Exception或者RuntimeException。
3)写一个有参构造方法
public MyException(String message) {
super(message);
}
4)在不满足条件的代码里面直接throw异常
if (score < 0 || score > 100) {
// System.out.println("分数错误");
MyException my = new MyException("分数不在指定范围内");
throw my;
} else {
System.out.println("分数正确");
}
4:常见的五种异常
1)NullPointerException
经常遇到的“空指针异常”,就是调用了未经初始化的对象或不存在的对象。
2) ClassNotFoundException
“指定的类不存在异常”,类的名称或路径不正确。
3) ArithmeticException
“数学运算异常”,有关的数学运算是否正确,公式是否正确。
4) ArrayIndexOutOfBoundsException
“角标越界异常”,调用的角标超出数组的范围。
5) IIIegalAccessException
“没有访问权限”,当前的方法对该类没有访问权限。
0 0
- 黑马程序员---异常?异常!
- 黑马程序员---异常处理异常
- 黑马程序员-程序异常
- 黑马程序员:异常问题
- 黑马程序员_异常
- 黑马程序员_异常
- 黑马程序员 异常
- 黑马程序员_异常
- 黑马程序员_异常
- 黑马程序员---异常处理
- 黑马程序员二、异常
- 黑马程序员_异常
- 黑马程序员_异常
- 黑马程序员_异常
- 29.黑马程序员-异常
- 黑马程序员-异常类
- 黑马程序员_异常
- 黑马程序员_异常
- Jenkins自动编译Android Studio创建的工程
- hdu-1342 Lotto
- HDU - 1203 I NEED A OFFER!
- 登陆Oracle EBS的Form遇到问题Internet Explorer has modified this page to help prevent cross-site scripting
- 初识Halcon
- 黑马程序员--异常
- sql 集合
- 大数据时代我们都是透明人
- api接口
- Strange fuction 2899 (二分+数学求导)
- VS项目属性的一些配置项的总结
- Android常用adb命令
- vnc 安装使用记录
- 定时任务-quartz