Java基础-19总结IO流,异常try…catch,throws,File类


1:异常(理解)

(1)程序出现的不正常的情况。

(2)异常的体系

Throwable

|--Error 严重问题,我们不处理。

|--Exception

|--RuntimeException 运行期异常,我们需要修正代码

|--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过

package cn.itcast_01;


/*

 * 异常:程序出现了不正常的情况。

 * 

 * 举例:今天天气很好,班长出去旅游。骑着自行车,去山里面呼吸新鲜空气。

 *  问题1:山路塌陷了,班长及时停住了,但是过不去了。严重的问题。

 *  问题2:班长出门推自行车,发现气没了,把气吹起来。出发前就应该检查的问题。

 *  问题3:班长骑着车在山路上惬意的行驶着,山路两边是有小石子的,中间是平坦的水泥路。

 *  一直在平坦的水泥路上行驶是没有任何问题的,但是呢,他偏偏喜欢骑到小石子上,结果爆胎了。旅游的过程中出现的问题。

 *  no zuo no die。

 * 

 * 程序的异常:Throwable

 *  严重问题:Error 我们不处理。这种问题一般都是很严重的,比如说内存溢出。

 *  问题:Exception

 *  编译期问题:不是RuntimeException的异常 必须进行处理的,因为你不处理,编译就不能通过。

 *  运行期问题:RuntimeException 这种问题我们也不处理,因为是你的问题,而且这个问题出现肯定是我们的代码不够严谨,需要修正代码的。

 * 

 * 如何程序出现了问题,我们没有做任何处理,最终jvm会做出默认的处理。

 * 把异常的名称,原因及出现的问题等信息输出在控制台。

 * 同时会结束程序。

 */

public class ExceptionDemo {

public static void main(String[] args) {

//第一阶段

int a = 10;

// int b = 2;

int b = 0;

System.out.println(a / b);

//第二阶段

System.out.println("over");

}

}

(3)异常的处理:

A:JVM的默认处理

把异常的名称,原因,位置等信息输出在控制台,但是呢程序不能继续执行了。

B:自己处理

a:try...catch...finally

自己编写处理代码,后面的程序可以继续执行

package cn.itcast_02;


/*

 * 我们自己如何处理异常呢?

 * A:try...catch...finally

 * B:throws 抛出

 * 

 * try...catch...finally的处理格式:

 *  try {

 *  可能出现问题的代码;

 *  }catch(异常名 变量) {

 *  针对问题的处理;

 *  }finally {

 *  释放资源;

 *  }

 * 

 * 变形格式:

 *  try {

 *  可能出现问题的代码;

 *  }catch(异常名 变量) {

 *  针对问题的处理;

 *  }

 * 

 * 注意:

 *  A:try里面的代码越少越好

 *  B:catch里面必须有内容,哪怕是给出一个简单的提示

 */

public class ExceptionDemo {

public static void main(String[] args) {

// 第一阶段

int a = 10;

// int b = 2;

int b = 0;


try {

System.out.println(a / b);

} catch (ArithmeticException ae) {

System.out.println("除数不能为0");

}


// 第二阶段

System.out.println("over");

}

}



package cn.itcast_02;


/*

 * A:一个异常

 * B:二个异常的处理

 *  a:每一个写一个try...catch

 *  b:写一个try,多个catch

 *  try{

 *  ...

 *  }catch(异常类名 变量名) {

 *  ...

 *  }

 *  catch(异常类名 变量名) {

 *  ...

 *  }

 *  ...

 * 

 *  注意事项:

 *  1:能明确的尽量明确,不要用大的来处理。

 *  2:平级关系的异常谁前谁后无所谓,如果出现了子父关系,父必须在后面。

 * 

 * 注意:

 *  一旦try里面出了问题,就会在这里把问题给抛出去,然后和catch里面的问题进行匹配,

 *  一旦有匹配的,就执行catch里面的处理,然后结束了try...catch

 *  继续执行后面的语句。

 */

public class ExceptionDemo2 {

public static void main(String[] args) {

// method1();


// method2();


// method3();


method4();

}


public static void method4() {

int a = 10;

int b = 0;

int[] arr = { 1, 2, 3 };


// 爷爷在最后

try {

System.out.println(a / b);

System.out.println(arr[3]);

System.out.println("这里出现了一个异常,你不太清楚是谁,该怎么办呢?");

} catch (ArithmeticException e) {

System.out.println("除数不能为0");

} catch (ArrayIndexOutOfBoundsException e) {

System.out.println("你访问了不该的访问的索引");

} catch (Exception e) {

System.out.println("出问题了");

}


// 爷爷在前面是不可以的

// try {

// System.out.println(a / b);

// System.out.println(arr[3]);

// System.out.println("这里出现了一个异常,你不太清楚是谁,该怎么办呢?");

// } catch (Exception e) {

// System.out.println("出问题了");

// } catch (ArithmeticException e) {

// System.out.println("除数不能为0");

// } catch (ArrayIndexOutOfBoundsException e) {

// System.out.println("你访问了不该的访问的索引");

// }


System.out.println("over");

}


// 两个异常的处理

public static void method3() {

int a = 10;

int b = 0;

int[] arr = { 1, 2, 3 };


try {

System.out.println(arr[3]);

System.out.println(a / b);

// System.out.println(arr[3]);

} catch (ArithmeticException e) {

System.out.println("除数不能为0");

} catch (ArrayIndexOutOfBoundsException e) {

System.out.println("你访问了不该的访问的索引");

}


System.out.println("over");

}


// 两个异常

public static void method2() {

int a = 10;

int b = 0;

try {

System.out.println(a / b);

} catch (ArithmeticException e) {

System.out.println("除数不能为0");

}


int[] arr = { 1, 2, 3 };

try {

System.out.println(arr[3]);

} catch (ArrayIndexOutOfBoundsException e) {

System.out.println("你访问了不该的访问的索引");

}


System.out.println("over");

}


// 一个异常

public static void method1() {

// 第一阶段

int a = 10;

// int b = 2;

int b = 0;


try {

System.out.println(a / b);

} catch (ArithmeticException ae) {

System.out.println("除数不能为0");

}


// 第二阶段

System.out.println("over");

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java帮帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值