큰 도로 데이터 week04 - day06 (I / 흐름 단계의 O 예외)

이 축제는 시작에서, I / O에 대한 접근은 빅 데이터가 특히 중요하다 옆 도로를 학습 시스템, I / O 스트림을 학습 스트림! ! ! 매우 중요합니다, 우리는 컬렉션, 네트워크 프로그래밍은,이 집이, 뒷면에 바람이 불면 은폐 경우에도 초석이 아닌 재단의 역할을, 다음 연구 또는 일을 말할 수있다 멀티 스레딩 언급 중요성을 첨부해야한다 .

음, ADO는 질문에 : I / O 스트림을 학습하기 전에, 우리는 먼저 파악하는 것입니다 이상파일

1, 이상 현상의 분류를 살펴 :

도 이상 분류

오류 예외의 RuntimeException : 그래프에서 우리는 추한, 이상 세 가지 범주로 나누어 나오지 않는다

친구가 내가이 이상을 일을 포기, 물어 것입니다, 또한 분류, 아 이해하기 어려운! ! 걱정, 나는 특유의 얘기하자하지 마십시오

무슨 일이 비정상인가?  

    프로그램은 특별한 상황의 출현이다.

명확하지? 예를 계속 :

    예를 들어, 오늘 날씨는 내가 쇼핑을, 시내 쇼핑가는 자전거를 타고있어 좋다. 그러나? 나는 몇 가지 질문을했다 :

      질문 1 : 내 자동차 사고로가는 길에, 나는 갈 수 없어, 이것은 심각한 문제입니다.

      질문 2 : 나는, 자전거, 아이들이 가스를 찾지 못했습니다 밀어 당신이 출발하기 전에 확인해야 문제가 가스를 채우고입니다.

      질문 3 : 도로에 내 자전거를 타고는, 도로의 양쪽은 자갈 도로,하지만 난 그냥 위에서 타고, 문제를 내 타이어의 결과를 실행하는 경우

해당됨 :

  비정상적인 프로그램 :의 Throwable

    심각한 문제 : 우리는이 문제를 해결하지 않는 오류는 일반적으로 메모리 오버 플로우와 같은 매우 심각한 문제입니다

      이상 : 예외

        로 분할 :

          이상 컴파일 시간 :하지의 RuntimeException 예외는, 당신이 처리되지 않기 때문에, 컴파일러는 통과하지 않습니다, 처리해야합니다.

          이상 운영 기간 : 그것은 프로그래머가 자신의 문제이며,이 문제는 우리의 코드가 정확한만큼, 우리가 코드를 수정해야하지 확실히 때문에 RuntimeException을 우리는이 문제를 해결하지 않습니다.

그는 너무 많은, 그것의 거친 아이디어를해야 비정상 무엇인지, 다음 동작을보고했다! ! ㅎㅎ

프로그램이 문제가있는 경우 2, 우리는 기본 처리 (것 어떤 처리, 최종 JVM (자바 가상 머신)하지 않았다 예외의 이름, 문제의 원인 및 콘솔의 출력으로 위치 정보의 출현을, 그리고 프로그램을 종료합니다 ) 다음 코드 :

1 개  에 대한 패키지 페널티 com.wyh.IO 흐름 DAY1;
 2  
3  
4  / ** 
5  
6  * 작성 : 2019년 11월 28일 오후 8시 53분 26초
 7  
8  * 프로젝트 명 : practise09_IO 흐름 (2)
 (9)  
(10)  * @author WYH
 . 11  
(12)는  * @version 1.0
 13 것은  
14  * @since 는 JDK 1.8.0
 15  
16  * 파일명 : ExceptionDemo1.java
 . 17  
(18)는  * 클래스 설명 :
 . 19  은 try {*
 20 인  *                 
 (21)은  캐치 () {*}는
 22이다  *        
 23 인 * 마지막} {
 24  *        
 25  *}    
 26   * / 
27  
28  공용  클래스 ExceptionDemo1 {
 29      공공  정적  무효 메인 (문자열 []에 args) {
 30          INT는 I = 10 ;
31          의 INT J = 0 ;
32  //         시도 { 
33              에서 System.out.println (I / J);
34  //         } 캐치 (예외 E) {
 35  //             에서 System.out.println ( "除数不能为0");
36  //         }
 37  //        
38          에서 System.out.println ( "이상" );
39          
40      }
 41  
42 }

어떻게 핸들 예외 :

참고 :

  Java 가상 머신이 적을 것이다 메모리 자원을 개방하기 때문에 1, 가능한 한 적게는 코드 내에서 시도

  2, 문제가있는 시도하면, 여기에 문제가 밖으로 던져, 다음과 일치하는 문제의 내부를 잡을 것입니다.

  일치가있는 경우 (3)는, 처리를 캐치 내부 실행된다. 그런 다음 시도 ... 캐치의 끝은 ... 문 다음에 계속

 

JDK7 새로운 예외 처리 방식의 출현 :

코드 쇼 :

 1 package com.wyh.IO流day1;
 2 
 3 
 4 /**
 5 
 6  * 创建时间:2019年11月28日 下午8:53:26
 7 
 8  * 项目名称:practise09_IO流(2)
 9 
10  * @author WYH
11 
12  * @version 1.0
13 
14  * @since JDK 1.8.0
15 
16  * 文件名称:ExceptionDemo1.java
17 
18  * 类说明:
19  *         JDK7版本新出现的异常处理方式
20  *         try{
21  *             ...
22  *         }catch(异常类名1 | 异常类名2 | 异常类名3..  异常名){
23  *             ....
24  *         }
25  * 
26  */
27 
28 public class ExceptionDemo2 {
29     public static void main(String[] args) {
30         int i = 10;
31         int j = 0;
32         int[] arr =new int[3];
33         try {
34             System.out.println(i/j);
35             System.out.println(arr[3]);
36         } catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {
37             System.out.println("出现异常");
38         }
39         
40         System.out.println("over");
41         
42     }
43 
44 }

3、接下来学习一些Throwable中的方法:

getMessage()   获取异常信息,返回字符串

toString()  获取异常类名和异常信息,返回字符串

printStackTrace()  获取异常类名和异常信息,以及异常出现在程序中的位置,返回值void

printStackTrace()  通常用该方法将异常内容保存在日志文件中,以便查阅。

 1 package com.wyh.IO流day1;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Date;
 6 
 7 
 8 /**
 9 
10  * 创建时间:2019年11月28日 下午8:53:26
11 
12  * 项目名称:practise09_IO流(2)
13 
14  * @author WYH
15 
16  * @version 1.0
17 
18  * @since JDK 1.8.0
19 
20  * 文件名称:ExceptionDemo1.java
21 
22  * 类说明:
23  *         try{
24  *             
25  *         }catch(){
26  *             
27  *         }
28  * 的三种方法
29  * 
30  */
31 
32 public class ExceptionDemo4 {
33     public static void main(String[] args) {
34         
35         //编译时异常
36         String s = "2019-11-28";
37         SimpleDateFormat ds = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
38         try {
39             Date d = ds.parse(s);
40             System.out.println(d);
41         } catch (ParseException e) {
42 //            e.printStackTrace();
43 //            System.out.println("解析日期出现了错误");
44             
45             
46             //方法一:getMessage()
47 //            System.out.println(e.getMessage());//Unparseable date: "2019-11-28"
48             
49             //方法二:toString()
50 //            System.out.println(e.toString());//java.text.ParseException: Unparseable date: "2019-11-28"
51             
52             //方法三:e.printStackTrace()  而我们经常使用的是这个
53             /*java.text.ParseException: Unparseable date: "2019-11-28"
54                 at java.text.DateFormat.parse(DateFormat.java:366)
55                 at com.wyh.IO流day1.ExceptionDemo4.main(ExceptionDemo4.java:39)*/
56             e.printStackTrace();
57             
58             
59         }
60     }
61 
62 }

小结:

4、throw

  在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。

举例:

 1 package com.wyh.IO流day1;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Date;
 6 
 7 /**
 8  * 
 9  * 创建时间:2019年11月28日 下午8:53:26
10  * 
11  * 项目名称:practise09_IO流(2)
12  * 
13  * @author WYH
14  * 
15  * @version 1.0
16  * 
17  * @since JDK 1.8.0
18  * 
19  *        文件名称:ExceptionDemo1.java
20  * 
21  *        类说明: throw
22  * 
23  */
24 
25 public class ExceptionDemo6 {
26     public static void main(String[] args) {
27         System.out.println("我热爱大数据");
28         
29         //在main方法里尽量不使用抛出,因为如果出错就无法走下去。
30         try {
31             method1();
32         } catch (ParseException e) {
33             // TODO Auto-generated catch block
34             e.printStackTrace();
35         }
36         
37         try {//为了保证程序正常进行运行
38             method2();//运行时期的异常调用时不做处理,如果出错依旧停止程序
39         } catch (Exception e) {
40             e.printStackTrace();
41         }
42         
43         
44         System.out.println("所以我现在是大牛");
45 
46     }
47 
48     
49     
50     //运行时期的异常在方法调用的时候可以不去处理
51     private static void method2() throws ArithmeticException{
52         int i = 10;
53         int j = 0;
54         System.out.println(i/j);
55         
56     }
57 
58 
59 
60     //编译时期的异常方法我们必须进行处理,抛出
61     private static void method1() throws ParseException {
62         // 编译时异常
63         String s = "2019-11-28";
64         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
65         Date d = sdf.parse(s);
66         System.out.println(d);
67 
68     }
69 }

下面有一道这样的面试题:

 

(怎么找异常??跟进鼠标看方法是继承了什么异常类,看父类)

 

5、finally:被finally控制的语句一定会执行

 

 1 package com.wyh.IO流day1;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Date;
 6 
 7 /**
 8  * 
 9  * 创建时间:2019年11月28日 下午8:53:26
10  * 
11  * 项目名称:practise09_IO流(2)
12  * 
13  * @author WYH
14  * 
15  * @version 1.0
16  * 
17  * @since JDK 1.8.0
18  * 
19  * 文件名称:ExceptionDemo1.java
20  * 
21  * 类说明: finally 
22  *   注意:如果程序在执行到finally之前退出了,就不会执行
23  * 
24  */
25 
26 public class ExceptionDemo7 {
27     public static void main(String[] args) {
28         String s = "2019-11-29";
29         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
30         
31         Date d = null;
32         
33         try {
34             sdf.parse(s);
35         } catch (ParseException e) {
36             e.printStackTrace();
37             System.exit(0);
38         }finally{
39             System.out.println("这条语句时可以被执行的");
40         }
41         
42         System.out.println(d);
43         
44         
45     }
46 }

 

那么就有这样的面试题:

 

6、自定义异常:

(1)自定义类并继承Exception父类:

 

 1 package com.wyh.自定义异常;
 2 
 3 /**
 4 
 5  * 创建时间:2019年11月29日 下午8:42:32
 6 
 7  * 项目名称:practise09_IO流(2)
 8 
 9  * @author WYH
10 
11  * @version 1.0
12 
13  * @since JDK 1.8.0
14 
15  * 文件名称:MyException.java
16 
17  * 类说明:
18  *         两种方式实现自定义异常(这里使用继承Exception)
19 
20  */
21 
22 public class MyException extends Exception{
23     //无参构造
24     public MyException(){
25         
26     }
27     
28     //有参构造,传递消息
29     public MyException(String s){
30         super(s);
31     }
32 }

 

(2)自定义另一个类,写方法,方法中抛出我们刚刚自定义的类:

 1 package com.wyh.自定义异常;
 2 
 3 /**
 4 
 5  * 创建时间:2019年11月29日 下午8:55:18
 6 
 7  * 项目名称:practise09_IO流(2)
 8 
 9  * @author WYH
10 
11  * @version 1.0
12 
13  * @since JDK 1.8.0
14 
15  * 文件名称:MyTeacher.java
16 
17  * 类说明:
18  *         定义新类,定义新的方法,使用自定义的异常
19 
20  */
21 
22 public class MyTeacher {
23     
24     public void check(int i) throws MyException{
25         if(i>100 || i<0){
26             throw new MyException("分数必须在0到100之间");
27         }else{
28             System.out.println("分数合理");
29         }
30     }
31     
32     
33 
34 }

(3)测试类:

 1 package com.wyh.自定义异常;
 2 
 3 import java.util.Scanner;
 4 
 5 /**
 6  * 
 7  * 创建时间:2019年11月29日 下午8:58:32
 8  * 
 9  * 项目名称:practise09_IO流(2)
10  * 
11  * @author WYH
12  * 
13  * @version 1.0
14  * 
15  * @since JDK 1.8.0
16  * 
17  *        文件名称:ExceptionDemo.java
18  * 
19  *        类说明: 测试我们的自定义异常
20  */
21 
22 public class ExceptionDemo {
23     public static void main(String[] args) {
24         Scanner sc = new Scanner(System.in);
25         MyTeacher t = new MyTeacher();
26         while (true) {
27             System.out.println("请输入你的分数:");
28             int i = sc.nextInt();
29             if (i == 886) {
30                 break;
31             } else {
32                 try {
33                     t.check(i);
34                 } catch (MyException e) {
35                     e.printStackTrace();
36                     break;
37                 }
38 
39             }
40 
41         }
42     }
43 
44 }

7、异常使用的注意事项:

 

 

下一节 介绍File

추천

출처www.cnblogs.com/wyh-study/p/11964342.html