黑马程序员--异常
来源:互联网 发布:汉邦尚品 知乎 编辑:程序博客网 时间:2024/06/10 22:51
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
异常
异常:指程序运行中所出现的问题,如空指针,角标越界等。这个问题按照面向对象思想进行描述,并封装成了对象。而通过将问题进行分类,发现其中的共有问题,便形成了异常体系。
异常的体系:
Throwable
|--Error:通常出现重大问题,如:运行的类不纯在或者内存有溢出等。不编写正对代码处理。
|--Exception:在运行时运行问题的情况,可以通过try catch finally进行解决。
注:Exception和Error的子类名都是以父类名作为后缀。
Throwable中的方法:
getMessage():获取异常信息,返回字符串。
toString():获取异常类名和异常信息,返回字符串。
printStatckTrace():获取异常类名和异常信息,以及异常出现在程序中的位置,返回void。
printStatickTrace(PrintStream s):通常用该方法将异常内容保存在异常文件中,以便于查阅。
throw和throws
throw用于标识函数暴露出的异常。
throw用于抛出异常对象。
throws和throw的区别:
throws:用于函数上,后面跟异常对象。
throw:用于函数内,后面跟异常对象。
异常的处理:
异常处理的5个关键字
try ,catch,
finally
throw, throws
异常的处理格式:
try{
//处理异常的语句
}catch(异常类 对象){
//处理异常的语句。
}finally{
//一定会执行的语句。
}
Finally代码块只有一种情况不会被执行,就是在之前执行了System.exit(0).
package com.itheima;
public class ExceptionDemo {
public static void main(String[] args) throws Exception {
// throwsDemo();
tryCatchDemo();
tryThrowDemo();
}
private static void tryThrowDemo() {
// TODO Auto-generatedmethod stub
try {
int[]arr = newint[]{1,3,5,7,9};
System.out.println(arr[9]);
} catch (ArrayIndexOutOfBoundsExceptione) {
// TODO Auto-generatedcatch block
//可以抛出一个新的异常。
throw new RuntimeException();
}
}
private static void tryCatchDemo() {
// TODO Auto-generatedmethod stub
try {
int[]arr = newint[]{1,3,5,7,9};
System.out.println(arr[9]);
} catch (ArrayIndexOutOfBoundsExceptione) {
// TODO Auto-generatedcatch block
//出现异常后的处理方式,此处用打印简单演示。
System.out.println("角标越界");
}finally{
System.out.println("程序执行完毕");
}
}
private static void throwsDemo() throws Exception{
// TODO Auto-generatedmethod stub
//抛出给上层调用者解决
int[] arr = new int[]{1,3,5,7,9};
System.out.println(arr[9]);
}
}
异常分类:
编译时被检查异常; ---> Checked异常
在程序中必须使用try...catch处理;
编译时不被检测的异常; ---> Runtime异常
可以不使用try...catch处理,但一旦出现异常就将由JVM处理。
Runtime异常:
RuntimeException(运行时异常)是指因设计或实现方式不当而导致的问题。多半都是程序员不小心所造成的失误,如:角标越界,空指针异常等。
Checked异常:
除了RuntimeException以及子类,其他的Exception及其子类都是受检查异常,我们也可以称为非RuntimeException异常。java编译器会检查他,即如出现这种异常,要么用trycatch进行处理或者用throws抛出,编译就不会通过,这种异常程序必须处理。
自定义异常:
自定义类继承Exception或其子类。
通过构造函数定义异常信息。
简单示例:
package com.itheima;
public class DemoException {
public static void main(String[] args) {
try {
int[]arr =newint[]{1,5,7,8};
System.out.println(arr[9]);
} catch (Exceptione) {
// TODO Auto-generatedcatch block
throw new Demo3("角标越界异常");
}
}
}
class Demo3extends RuntimeException{
String message;
public Demo3(Stringmessage) {
super();
this.message =message;
}
}
异常细节:
RuntimeException以及其子类如果在函数中被throw抛出,可以不用再函数上声明。
一个方法被覆盖时,覆盖他的方法必须抛出其相同的异常或异常子类。
如果父类抛出多个异常,那么重写(覆盖)方法必须抛出那些异常的一个子集,不能抛出新的异常。
- 黑马程序员---异常?异常!
- 黑马程序员---异常处理异常
- 黑马程序员-程序异常
- 黑马程序员:异常问题
- 黑马程序员_异常
- 黑马程序员_异常
- 黑马程序员 异常
- 黑马程序员_异常
- 黑马程序员_异常
- 黑马程序员---异常处理
- 黑马程序员二、异常
- 黑马程序员_异常
- 黑马程序员_异常
- 黑马程序员_异常
- 29.黑马程序员-异常
- 黑马程序员-异常类
- 黑马程序员_异常
- 黑马程序员_异常
- 发送请求的时候不能带特殊字符
- 关于xmpp的协议原理分析
- java中英文获取首字母
- Autoconf学习笔记
- EasyUi---tree 导航目录
- 黑马程序员--异常
- 常见对话框
- 百度天气预报
- 矩阵加速递推(XDU 斐波那契数列为列)
- linux shell 字符串操作(长度,查找,替换)详解
- 【对学Oracle数据库初学者的开场篇】
- 黑马程序员--网络编程
- js中没有replaceAll
- [2015/05/06] Start from the outset.