由来:
1.程序出现错误。
2.不应该出现了一个不算致命的问题,就导致整个程序或系统崩溃!!!
3.异常处理机制(try-catch-finaly).
类型:
"Throwable"是所有错误和异常的超类。在Java中,错误和异常都继承自Throwable类。
错误(Error)表示通常不应该由应用程序捕获的异常情况。例如,虚拟机错误或内存不足条件。
异常(Exception),则表示Java程序应该捕获和处理的条件,如输入/输出错误、算术错误或与API的不正确使用相关的错误
5种常见的运行时异常:ArithmeticException、NumberFormatException、NullPointerException、ArryIndexOutOfBoundsException、ClassCastException
package com.jsu.zhang;
//数学运算异常!!!
public class ArithmeticException {
public static void main(String[] args) throws Exception {//为什么有异常信息,默认的throws,层层抛到了JVM
int a = 10;
int b = 0;
int c ;
c = a/b;
/* try {
c = a/b;
} catch (Exception e) {
System.out.println("就是这个异常:"+e.getMessage());
}*/
///中断!!!!!!!!!!!!!!
System.out.println("继续");
}
}
package com.jsu.zhang;
public class ArrayIndexOutOfBoundsException {
public static void main(String[] args) {
int [] arr= {1,2,3,4,};
for (int i = 0;i<=arr.length;i++){数组下标越界异常!!!!
System.out.print(arr[i]+" ");
System.out.print("\t");
}
for (int j : arr) {
System.out.print(j+" ");
}
}
}
package com.jsu.zhang;
class A {}
class B extends A{}
class C extends A{}
public class ClassCastException {
public static void main(String[] args) {
A b = new B();//向上转型//
B b2 = (B) b;//向下转型//
C c1 = (C) b;//将对象强制转换为不是实例子类时抛出的异常!!!
package com.jsu.zhang;
public class NumerFormatException {
数字格式异常//parse 语句分析
public static void main(String[] args) {
// String name ="长得帅";
// double number = Double.parseDouble(name);//字符串转换为一种数值类型,但改字符串不能转为适当的格式时
// System.out.println(number);
String name1 ="0.123";
double number1 = Double.parseDouble(name1);//字符串转换为一种数值类型,但改字符串不能转为适当的格式时
System.out.println(number1);
}
}
package com.jsu.zhang;
/空指针异常!!!!
public class NullPointerException {
public static void main(String[] args) {
String name1 = "张得帅!!!";
System.out.println(name1.length());
try {
try {
String name2 = null;
System.out.println(name2.length());
} catch (Exception e) {
throw new RuntimeException(e);
}
} catch (RuntimeException e) {
throw new RuntimeException(e);
}
}
}
处理:
1.try-catch-finally
try{
可能有异常的代码
}
catch(Exception e){
1.异常有了
2.系统封装成 Exception 对象 e ->catch
3.程序猿自己处理
4.没有异常->catch代码块不执行!!!!
}
finally{
1.必执行!
2.通常将释放资源的代码放在finally中!!!
}
2.throws机制
没有try-catch-finally,默认throws