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("性別有錯誤");
}
}