要養(yǎng)成一個(gè)好習(xí)慣,在最后一個(gè)catch上去捕獲最大的Exception,以防止程序出現(xiàn)一個(gè)未捕獲的異常導(dǎo) 致程序退出。還要注意的是,若捕獲的異常中有父子類(lèi)關(guān)系的,一定是子類(lèi)異常在上,父類(lèi)異常在下。 例1:
package day03;/** * java異常捕獲機(jī)制中的try-catch * @author Administrator * */public class ExceptionDemo1 { public static void main(String[] args) { System.out.運(yùn)行結(jié)果:程序開(kāi)始了1a反正就是出了個(gè)錯(cuò)!程序結(jié)束了例2:finally示例:
package day03;/** * finally面試題 * @author Administrator * */public class ExceptionDemo3 { public static void main(String[] args) { System.out.println(test("0") + "," +test(null) + "," +test("")); } @SuppressWarnings("finally") public static int test(String str){ try { return '0'-str.charAt(0); } catch (NullPointerException e) { return 1; } catch (Exception e){ return 2; } finally{ return 3; } }}運(yùn)行結(jié)果:
3,3,3例3:自定義exception示例。 自定義人類(lèi)年齡不合法: 地異步寫(xiě)一個(gè)類(lèi)繼承至Exception,并重寫(xiě)父類(lèi)的方法:
package day03;public class IllegalAgeException extends Exception { /** * 該異常表示年齡不合法 */ private static final long serialVersionUID = 1L; public IllegalAgeException() { super(); // TODO Auto-generated constructor stub } public IllegalAgeException(String message, Throwable cause) { super(message, cause); // TODO Auto-generated constructor stub } public IllegalAgeException(String arg0) { super(arg0); // TODO Auto-generated constructor stub } public IllegalAgeException(Throwable cause) { super(cause); // TODO Auto-generated constructor stub }}第二步:新建一個(gè)Person人用戶,設(shè)置年齡:
package day03;/** * 描述一個(gè)用戶信息 */public class Person { private int age; public int getAge() { return age; } /** * 通常,方法中使用throw拋出什么異常,方法 聲明的時(shí)候就要使用throws定義該異常的拋出。 * 方法上若使用throws聲明了某些異常的拋出時(shí),那么外界在調(diào)用該方法的時(shí)候就有一個(gè)強(qiáng)制要求,必須處理這些異常。 * 處理的手段有兩種: 1.try-catch捕獲該異常。2.接著向外拋出。 * 需要注意,當(dāng)我們使用throw拋出的不是RuntimeException及其子類(lèi)異常時(shí),就必須處理這個(gè)異常。 * @param age * @throws IllegalAgeException */ public void setAge(int age) throws IllegalAgeException{ if(age<0||age>100){throw new IllegalAgeException("不符合人類(lèi)年齡");} this.age = age; }}第3步:使用自定義的異常測(cè)試:
package day03;public class TestPerson { public static void main(String[] args){ Person p = new Person(); try { p.setAge(1000); } catch (IllegalAgeException e) { e.printStackTrace(); }//這里會(huì)拋出異常。 System.out.println("他的年齡是:"+p.getAge()); }}運(yùn)行結(jié)果:
day03.IllegalAgeException: 不符合人類(lèi)年齡 at day03.Person.setAge(Person.java:30) at day03.TestPerson.main(TestPerson.java:7)他的年齡是:0新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注