Java第十二天(iead快捷鍵的使用、異常、try catch處理異常、finall用法、編譯期間異常、自定義異常)

54.iead快捷鍵的使用java

/*
生成主方法快捷鍵    psvm
生成打印輸出快捷鍵    sout
生成for循環的快捷鍵盤   fori
生成加強的for循環打印數組   數組名.for
生成流程控制語句    Ctrl+Alt+T
生成構造方法、get和set方法、重寫toString()的方法、重寫父類的方法等     alt+insert
*/
public class Nut{
//    使用快捷鍵alt+insert生成構造方法
    public Nut() {
    }

    //  運用快捷鍵psvm生成主方法
    public static void main(String[] args) {
        System.out.println("運用快捷鍵sout生成打印輸出語句");
        String[] bnuts=new bnuts[]{"碧根果","核桃","杏仁","開心果"};
//   運用快捷鍵fori生成for循環語句
        for (int i = 0; i < 4; i++) {
            System.out.println(bnuts[i]);
        }
//   使用加強的for循環打印數組,bnuts.for+enter鍵
        for (String bnut : bnuts) {
            System.out.println(bnut);
        }
        if () {
            System.out.println("使用流程控制語句快捷鍵Ctrl+Alt+T對光標顯示的語句生成流程控制語句");
        } else {
        }

    }
}
Ctrl+B 進入光標所在的方法/變量的接口或是定義處,等效於Ctrl + 左鍵單擊
Ctrl + D  複製光標所在行或複製選擇內容,並把複製內容插入光標位置下面
Ctrl + F  在當前文件進行文本查找
Ctrl + H  查看類的繼承結構
Ctrl + N  經過類名定位文件
Ctrl + O  快速重寫父類方法
Ctrl + X  剪切所選中行
Ctrl + Y  刪除光標所在行或刪除選中的行
Ctrl + W  遞進式選擇代碼塊
Ctrl + Z  撤銷
Ctrl + F1 在光標所在的錯誤代碼出顯示錯誤信息
Ctrl + F12  彈出當前文件結構層,能夠在彈出的層上直接輸入進行篩選
Ctrl + Space  基礎代碼補全,默認在Windows系統上被輸入法佔用,須要進行修改,建議修改成Ctrl + 分號(已經修改)
Ctrl + /  註釋光標所在行代碼,會根據當前不一樣文件類型使用不一樣的註釋符號
Ctrl+Shift+/   多行註釋,若是按第二次就是反註釋
Alt + Enter   根據光標所在問題,提供快速修復選擇,用的最多的是生成變量
Shift + F3    在查找模式下,定位到上一個匹配處
Ctrl + Alt + B   在某個調用的方法名上使用會跳到具體的實現處
Ctrl + Alt + L   格式化代碼 能夠對當前文件和整個包目錄使用
Ctrl + Alt + T   對選中的代碼彈出環繞選項彈出層
Ctrl + Alt + 左方向鍵   退回到上一個操做的地方,查看源碼的時候很方便
Ctrl + Alt + 右方向鍵   前進到上一個操做的地方,查看源碼的時候很方便
Ctrl + Shift + R    根據輸入內容替換對應內容,範圍爲整個項目或指定目錄內文件
Ctrl + Shift + U    對選中的代碼進行大/小寫輪流轉換
Ctrl + Shift + Z    取消撤銷
Ctrl + Shift + /    代碼塊註釋
Ctrl + Shift + +    展開全部代碼
Ctrl + Shift + -    摺疊全部代碼

55.異常數組

(1)概念:在咱們寫程序的時候不免會出現錯誤,java中的異常機制爲了提升咱們程序的健壯性和容錯性而存在jvm

(2)異常的體系ide

錯誤:Error是throwable的子類,他是程序出現了嚴重的問題,這種問題程序解決不了。spa

異常:都是用Exception爲結尾。咱們能夠經過程序來處理異常。.net

異常分爲兩類:3d

運行時候的異常:能夠編譯經過,程序在運行期間報出來的異常。對象

編譯期異常:這個異常必需要處理,不然無法編譯經過。blog

Exception下面的子類除了RuntimeException之外都是編譯期的異常繼承

RuntimeException下面的全部的子類都是運行時的異常。

56.try  catch處理異常

a/b除法的時候若是要是b=0,那麼jvm會給咱們建立一個ArithmeticException對象。運行時異常對象會自動的向上拋出,調用端再拋給jvm,jvm打印出來異常信息。異常信息展現是什麼異常和調用端和被調用端多少行報的異常。異常後面的代碼不能再執行

(1)try  catch處理異常

try裏面的代碼就是有可能產生異常對象的代碼

catch(Exception e)用來捕捉到產生的異常對象,catch塊就是來處理異常的代碼塊。

e.printStackTrace();打印異常的信息

try …..catch處理異常的特色:

  1. try內部發生異常下面的代碼不會執行
  2. 產生的異常對象被catch塊裏面的參數接收
  3. catch塊來處理異常(如何處理要根據具體的業務要求)
  4. 若是異常對象被catch來處理就不會向上拋出
  5. 因爲異常對象被處理了,異常後面的代碼就會正常的執行
  6. 調用端不會感知到異常的產生(由於沒有向上拋出異常對象),後面的代碼正常執行          
public static void main(String[] args) {
        int result=divide(10,0);
        System.out.println("調用端後面的代碼被執行了");
        System.out.println(result);
    }
    public static int divide(int a,int b){
        int c=0;
//        從被調用端處理異常
        try {      //        try裏面的代碼就是可能產生異常的代碼
            c=a/b;
        } catch (Exception e) {      //       catch(Exception e) 用來捕捉產生異常的對象
            System.out.println("發送異常");
            e.printStackTrace();//   打印異常信息
        }
        System.out.println("被調用端後面的代碼被執行了");
        return c;
    }
}
public static void main(String[] args) {
        int result= 0;
//        從調用端處理異常
        try {
            result = divide(10,0);//     接受到異常對象
        } catch (Exception e) {
            //處理異常
            String message=e.getMessage();//得到異常信息
            System.out.println(message);
            String s=e.toString();//得到異常的詳細信息
            System.out.println(s);
            e.printStackTrace();//打印異常的超級詳細的信息
            System.out.println("傳錯參數");
            result = divide(10,2);
        }
        System.out.println(result);
    }
    public static int divide(int a,int b){
        int c=0;
        c=a/b;
        return c;
    }

57.finall用法

(1)發生了異常會向上的拋出,可是finally裏面的代碼永遠會獲得執行

(2)return後面能夠經過finally來執行代碼

(3) try …..catch …..finally,可是finally裏面的代碼永遠會獲得執行

public static int divide(int a,int b){
    int c=0;
    try {
        c=a/b;
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        System.out.println("被調用端後面的代碼被執行了");
    }
    return c;
}

(4)筆試題,finally是惟一一個能夠return一次以後還能return的代碼塊,能夠修改方法的返回值

public static void main(String[] args) {
    int result=divide(20,0);
    System.out.println(result);
}
public static int divide(int a,int b){
    int c=0;
    try {
        c=a/b;
        return c;
    } catch (Exception e) {
        c=4;
        return c;//方法遇到return就造成返回值,後續再修改變量不會改變返回值。
    } finally {
        c=5;
        return c;//finally是惟一一個能夠return一次以後還能return的代碼塊,能夠修改方法的返回值
    }
}

58.編譯期間異常

編譯期異常:這個異常必需要處理,不然無法編譯經過。

jdk能夠準確的預測到這個代碼可能發生異常,因此給開發者一個錯誤的警示,讓咱們來處理這種可能發生的異常。

運行時異常向上拋出不須要來聲明的

編譯期的異常若是想要向上拋出就必需要來聲明

編譯期的異常建議你們經過try…catch來處理

運行時的異常建議向上拋,最頂層來處理。

import java.io.IOException;
import java.net.ServerSocket;

public class AbnomalEditor {
    public static void main(String[] args) throws IOException {
        ServerSocket ss=new ServerSocket(8000);
    }
}
import java.io.FileNotFoundException;
import java.io.FileReader;

public class AbnomalRun {
    public static void main(String[] args) {
        try {
            method();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static void method() throws FileNotFoundException {
        FileReader f = new FileReader("monica");
    }
}

59.自定義異常

(1)自定義規則

咱們之後的項目中自定義的異常99%都是運行時的異常。咱們定義的異常要繼承RuntimeException

在類中繼承RuntimeException的構造器便可。

//定義的異常要繼承RuntimeException
public class StockException extends RuntimeException {
//    在類中繼承RuntimeException的構造器便可
    public StockException() {
    }

    public StockException(String message) {
        super(message);
    }

    public StockException(String message, Throwable cause) {
        super(message, cause);
    }

    public StockException(Throwable cause) {
        super(cause);
    }

    public StockException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

(2)自定義異常的使用

public class Self {
    public static void main(String[] args) {
        try {
            submitOrder(6);
        } catch (Exception e) {
            System.out.println("收到庫存不足信息");
            submitOrder(5);
        }
    }
    public static void submitOrder(int stock){
        if (stock>5) {
            throw new StockException("庫存不足"+stock);
        } else {
            System.out.println("自動跳轉支付界面");
        }
    }
}
相關文章
相關標籤/搜索