JAva異常4手動で異常とカスタム異常クラスを投げ出す


/*
  • 手動放出異常:throw(throwsは処理異常、throwは放出異常)

  • 1,Java例外クラスオブジェクトは、プログラム実行中に例外が発生した場合にシステムによって自動的に生成され、放出されるほか、必要に応じて手動で作成され、放出されることもできます.

  • 2まず例外クラスオブジェクトを生成し、throw文で放出操作(Java実行環境にコミット)を実現します.
  • が投げ出すことができる例外は、Throwableまたはそのサブクラスのインスタンスである必要があります.そうでないと構文エラーが発生します:
  • は通常RuntimeExceptionを使用し、次にExceptionを使用するが、その他の場合は少ない.

  • カスタム例外クラス:

  • 1、通常、ユーザカスタム例外クラスはRuntimeExceptionのサブクラスである.
  • 2、カスタム例外クラスは、通常、いくつかのリロードされたコンストラクタを記述する必要があります.
  • 3、カスタム例外はserialVersionUID
  • を提供する必要がある
  • 4、カスタムの例外はthrowによって投げ出されます.
  • 5,カスタム異常で最も重要なのは異常クラスの名前であり、異常が発生した場合、名前に基づいて異常タイプを判断することができる.



  • */
    入力タイプが間違っている場合、コードはループを終了できない場合があります.
    linkhttps://bbs.csdn.net/topics/370262930 17階の説明
    Scanner scan=new Scanner(System.in);文がforループ構造内またはtry構造内に移動すると、このバグは消失するか、catch構造にsacn.next()を追加します.文、次の入力データを読み込みます.
    package exception;
    
    import java.util.InputMismatchException;
    import java.util.Scanner;
    
    public class Exception_Throw {
         
      public static void main(String[] args) {
         
    	  Scanner scan = new Scanner(System.in);
    	  Worker w = new Worker();
    	for(;;) {
           //  for  ,      ,           ,  break    
    	try {
         
    	    System.out.println("     ");
    		int num = scan.nextInt();
    		w.getPay(num);//        catch ,break    。
    		System.out.println(w);
    		break;//    ,   break,    ,      
    	 } catch (InputMismatchException e) {
         
    		System.out.println(e.getMessage());
    		System.out.println("     ");
    	 } catch (RuntimeException e) {
         
    		System.out.println(e.getMessage());//getMessage()     String             ,     
    		System.out.println("     ");
    	}
    	}
    	
    	for(;;) {
          
    		try {
         
    			System.out.println("        ");
    			int num = scan.nextInt();
    			w.setScore(num);
    			System.out.println("      " + w.score);
    			break;
    		 } catch (InputMismatchException e) {
         
    			System.out.println(e.getMessage());
    			System.out.println("     ");
    		 }
    		 catch (NumberOutOfBoundsException e) {
         
    			System.out.println(e.getMessage());
    			System.out.println("     ");
    		 }
    	}
    	
    	for (; ;) {
         
    		//  ,           
    		try {
         
    			System.out.println("     ");
    			int a = scan.nextInt();
    			System.out.println("     ");
    			int b = scan.nextInt();
    			int c = ecm(a, b);
    			System.out.println(a + "  " + b + "  " + c);
    			break;
    		} catch (InputMismatchException e) {
         
    			System.out.println("      ,     ");
    		} catch (NegativeNumberException e) {
         
    			System.out.println(e.getMessage());
    			System.out.println("     ");
    		} catch (ArithmeticException e) {
         
    			System.out.println("     0 ,     ");
    		} 
    	}
    		
    		System.out.println("-----------");
    }
      
      public static int ecm(int i,int j) throws NegativeNumberException {
         //  NegativeNumberException  Exception,  RuntimeException   ,    
    	  if(i < 0 || j < 0) {
         
    		 throw new NegativeNumberException("         ") ;
    	  }
    	  return i / j;
      }
      
    }
    
    class Worker{
         
    	int score;
    	int salary;
    	static int minSalary = 2000;
    	
    	void getPay(int i){
         //   throws     
    		if(i >= minSalary) {
         
    		salary = i;
    		}else {
         
    			//System.out.println("    ");//    throw      
    			//throw new String("    ");//        Throwable       
    			throw new RuntimeException("        ,    ");//   throw     
    		}
    	}
    	@Override
    	public String toString() {
         
    		return "Worker [salary=" + salary + "]";
    	}
    	
    	void setScore(int i){
         
    		if(i >= 0 && i <= 100) {
         
    		score = i;
    		}else {
         
    			throw new NumberOutOfBoundsException("       0-100  ");
    		}
    	}
    		
    }
    
    class NumberOutOfBoundsException extends RuntimeException{
         
    	static final long serialVersionUID = 13265653435L;
    	
    	public NumberOutOfBoundsException(){
         
    		super();
    	}
    	
    	public NumberOutOfBoundsException(String message) {
         
    		super(message);
    	}
    	
    }
    
    class NegativeNumberException extends Exception{
         
    	static final long serialVersionUID = 1365653435L;
    	
    	public NegativeNumberException(){
         
    		super();
    	}
    	
    	public NegativeNumberException(String message) {
         
    		super(message);
    	}
    	
    }