1.什么是异常,异常机制有什么用?
程序执行过程当中发生不正常情况,这种不正常情况叫做:异常
java把异常信息输出到控制台,供程序员参考可以对程序进行修改
2.Java语言中处理异常包括两种方法:
第一种:在方法声明的位置上,使用throws关键字。(抛给上一集)
第二种:try - catch 语句来捕捉异常。
举个栗子:
某公司职员因为失误导致公司财产损失1000;
“损失1000”可以看作一个异常发生
处理这种异常
第一种方法:告诉上级【异常上抛】 上级也有这两种方法处理问题
第二种:自掏腰包 【异常的捕捉】
3.Java中异常发生,如果一直往上抛就会抛给Java处理器终止这个程序
程序出现异常:
public class ExceptionTest01 {
public static void main(String[] args) {
// System.out.println(100/0);
// System.out.println("hello!");
//上端出现异常 直接终止程序 下边程序也无法执行
}
}
第一种:throws处理:
public static void main(String[] args){
dooSome();
//以下代码报错的原因 因为dooSome在声明时使用了throws
//没有处理该异常 编译一次
}
public static void dooSome() throws ClassNotFoundException{
System.out.println("ododooddodo");
}
第一种处理方式:继续往上抛抛给main方法
public static void main(String[] args) throws ClassNotFoundException{
dooSome();
}
public static void dooSome() throws ClassNotFoundException{
System.out.println("ododooddodo");
}
第二种处理方式:
try - catch 进行捕捉
public static void main(String[] args){
try{
dooSome();
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
public static void dooSome() throws ClassNotFoundException{
System.out.println("ododooddodo");
}
}
throws处理异常
处理异常的态度:上报
/*
处理异常的第一种方法: throws
谁调用我这个方法,我就给谁,交给调用这处理我的问题
*/
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ExceptionTest03 {
public static void main(String[] args) throws Exception {
System.out.println("main begin");
m1();
System.out.println("main over!");
}
//Exception包括所有异常
private static void m1() throws Exception{
System.out.println("m1 begin");
m2();
System.out.println("m1 over");
}
//抛FileNotFoundException 的父类 IOException
private static void m2() throws IOException {
System.out.println("m2 begin");
m3();
System.out.println("m2 over");
}
private static void m3() throws FileNotFoundException {
//调用jdk中的构造方法
//创建一个输入流这个流需要传入一个文件的路径
//报错的原因
//这里调用了一个构造方法FileInputStream()
//构造方法声明上有 throws FileNotFoundException
//编译时异常
new FileInputStream("F:\\Java中的控制语句.docx");
}
}
//一般不建议在main方法中使用throws
//第二种方法 try - catch
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ExceptionTest03 {
public static void main(String[] args){
System.out.println("main begin");
try{
m1();
}catch (FileNotFoundException a){
} catch (Exception e) {
System.out.println("文件不存在!!!");
}
System.out.println("main over!");
}
private static void m1() throws Exception{
System.out.println("m1 begin");
m2();
System.out.println("m1 over");
}
private static void m2() throws IOException {
System.out.println("m2 begin");
m3();
System.out.println("m2 over");
}
private static void m3() throws FileNotFoundException {
new FileInputStream("F:\\Java中的控制语句.docx");
}
}