Calendar類 & 異常 & 自定義異常類

Calendar類

輸出今天是今年中的第幾天,第幾周
public static void main(String[] args) {
	Calendar c=Calendar.getInstance();
	int day=c.get(Calendar.DAY_OF_YEAR);
	int week=c.get(Calendar.WEEK_OF_YEAR);
	int month=c.get(Calendar.MONTH);
	month+=1;
	int year=c.get(Calendar.YEAR);
	System.out.println(month+"\t"+year+"今天是今年的"+day+"天, 今天是今年的"+week+"周");
}

異常

常見的運行時異常

NullPointerException		空指針異常(一個對象沒有初始化調用方法)
IndexOutOfBoundsException	下標越界異常
ClassCastException			類型轉換異常(對象類型轉換時)
NumberFormatException		數字格式異常
ArithmeticException			算術異常

非運行時異常(編譯時異常)

非運行時異常:編譯異常或檢查異常,
在程序設計過程中,編譯時就會被發現,但是執行時可能發生也可能不發生的異常,爲了程序不報錯可以執行,那麼這一類異常必須進行相應的處理
Exception的子類包括Exception,除了RuntimeExcption之外都屬於編譯時異常。

Exception類:異常的父類。

Error類:錯誤,錯誤比較嚴重的問題,不屬於異常,程序猿無法處理。

OutofMemory 堆內存 解決辦法:JVM調優

StackOutOfFlow

異常處理

Java的異常處理是通過5個關鍵字來實現的:

  • try:執行可能產生異常的代碼
  • catch:捕獲異常 ,並處理
  • finally:無論是否發生異常,代碼總能執行
  • throw: 手動拋出異常
  • throws:聲明方法可能要拋出的各種異常
throws關鍵字:聲明異常
使用原則:底層代碼向上聲明或者拋出異常,最上層一定要處理異常,否則程序中斷。
public static void divide() throws Exception {
		  //可能出現異常的代碼
}
public static void main(String[] args) {
		 try {
			divide();
		 } catch (Exception e) {
			e.printStackTrace();
		 }
}
或
public static void main(String[] args) throws Exception {
	 divide();
}

自定義異常類

i.自定義異常: 繼承Exception或RuntimeException
ii.在此類中定義構造方法,調用父類中的帶字符串參數的構造方法(此字符串表示對異常的描述)
鼠標右鍵-》 Generator Constructor from Superclass
iii.使用異常

package com.qf.day14_4;
/**
 * 性別異常
 *
 */
public class SexException extends RuntimeException {

	public SexException() {
		super();
		// TODO Auto-generated constructor stub
	}

	public SexException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
		super(message, cause, enableSuppression, writableStackTrace);
		// TODO Auto-generated constructor stub
	}

	public SexException(String message, Throwable cause) {
		super(message, cause);
		// TODO Auto-generated constructor stub
	}

	public SexException(String message) {
		super(message);
		// TODO Auto-generated constructor stub
	}

	public SexException(Throwable cause) {
		super(cause);
		// TODO Auto-generated constructor stub
	}
}


使用
	public void setSex(String sex) {
		if(sex.equals("男")||sex.equals("女")) {
			this.sex = sex;
		}else {
			//拋出異常
			throw new SexException("性別有錯誤"); 
		}
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章