java 匿名 异常_JAVA类(内部类、匿名内部类、异常、自定义异常)
內(nèi)部類
package AA;public class類 {int de=123;
StringBuffer dee=newStringBuffer();public class成員內(nèi)部類{public voidff() {
System.out.println("這是成員內(nèi)部類方法");
}
}/*1.可以訪問(wèn)外部類所有的成員,包括被聲明為私有(private)的;
2.可以使用任何訪問(wèn)權(quán)限修飾符,包括protected和private;*/
public voidff1() {int de1=12;class局部?jī)?nèi)部類{public voidff() {
System.out.println("局部?jī)?nèi)部類方法");
System.out.println(de);
}
}new局部?jī)?nèi)部類().ff();
}/*1.不允許使用任何訪問(wèn)權(quán)限修飾符;
2.創(chuàng)建局部?jī)?nèi)部類的對(duì)象的語(yǔ)法,必須在聲明局部?jī)?nèi)部類之后;調(diào)用只能在該方法里
3.可以訪問(wèn)外部類所有的成員,包括被聲明為私有(private)的;*/
private static class靜態(tài)內(nèi)部類{public voidff() {
System.out.println("這是靜態(tài)內(nèi)部類方法");
}
}/*1.只能訪問(wèn)static成員
2.可以使用任何訪問(wèn)權(quán)限修飾符,包括protected和private;
3.可以在其它類中直接創(chuàng)建靜態(tài)內(nèi)部類的對(duì)象,語(yǔ)法格式為:*/
public voiddy() {new 成員內(nèi)部類().ff();//調(diào)用成員內(nèi)部類方法
//調(diào)用方法二:? ?類.成員內(nèi)部類 de=new 類.成員內(nèi)部類();
new 類().ff1();//調(diào)用局部?jī)?nèi)部類方法
new 靜態(tài)內(nèi)部類().ff();//調(diào)用靜態(tài)內(nèi)部類方法
//調(diào)用方法二:類.靜態(tài)內(nèi)部類? de=new 靜態(tài)內(nèi)部類();
}public static voidmain(String[] args) {new類().dy();
}
}
參考:
匿名內(nèi)部類
參考:
抽象類
異常
先來(lái)點(diǎn)基礎(chǔ)的:
public classxin {public static voidmain(String[] args) {try{
System.out.println("hhhhh");int de[]=new int[10];
de[10]=12;
}catch(ArrayIndexOutOfBoundsException fr){
System.out.println("chucuo");
}
}
}
上面代碼解釋了:一個(gè)基本異常的基本格式,try{? } ......catch(){? ?}
try。。。catch:不需要拋出異常
自定義異常:
package AA;
import java.util.Scanner;class de1 extends Exception{//首先類要繼承Exception(就是異常類)
publicde1(String fr) {
super(fr);
}
}public classde{public static int fg(int a,int b) throws de1{//聲明方法并且拋出異常(throws de1)
Scanner de1=new Scanner(System.in);
System.out.println("請(qǐng)輸入數(shù)值1");
a=de1.nextInt();
System.out.println("請(qǐng)輸入數(shù)值2");
b=de1.nextInt();if(a<0||b<0) {throw new de1("負(fù)數(shù)錯(cuò)誤");//拋出異常
}if(a>100||b>100) {throw new de1("數(shù)大于100錯(cuò)誤");
}return a+b;
}public static voiddayin() {
System.out.println("異常啦");
}public static voidmain(String[] args) {try{
fg(3123,3123); //調(diào)用上面的方法,下面并且打印出結(jié)果,打印方法是打印方法的返回值//這里的數(shù)字沒(méi)多大用處,主要是不出錯(cuò)//根據(jù)上面的方法給出的變量所以這里必須要加//但是上面有輸入流,就直接將這個(gè)覆蓋了
System.out.println(fg(3123,3123));
}catch(de1 e) {//這個(gè)是try后面必須接的//括號(hào)里面的是異常類型,e是結(jié)果
dayin();
System.out.println(e);
}
}
}//1,程序通過(guò)try走,并且執(zhí)行fg方法//2,當(dāng)用戶輸入數(shù)值時(shí),會(huì)進(jìn)行判斷,如果不符合就會(huì)拋出異常(這里是拋在de1類里面,關(guān)鍵字:throw new 類名)//3,try執(zhí)行已經(jīng)異常了,所以將會(huì)執(zhí)行catch,而catch可以有多個(gè),那個(gè)catch則會(huì)判斷try異常屬于哪一類型的異常//4,判斷完后,將會(huì)執(zhí)行catch里面的語(yǔ)句,用來(lái)提示用戶//4的注意:上面的判斷下面什么(負(fù)數(shù)錯(cuò)誤)(da數(shù)錯(cuò)誤),其實(shí)是de1類的構(gòu)造string方法,可以去掉,直接在catch里面加提語(yǔ)句都一樣//列如下面:去掉構(gòu)造,在catch里面加已是語(yǔ)句
package AA;
import java.util.Scanner;classde1 extends Exception{
}public classde{static int fg(int a,int b) throws de1{//聲明拋出異常(throws de1)
Scanner de1=new Scanner(System.in);
System.out.println("請(qǐng)輸入數(shù)值1");
a=de1.nextInt();
System.out.println("請(qǐng)輸入數(shù)值2");
b=de1.nextInt();if(a<0||b<0) {throw new de1();//拋出異常,說(shuō)白了就是
}if(a>100||b>100) {throw newde1();
}return a+b;
}static voiddayin() {
System.out.println("異常啦");
}public static voidmain(String[] args) {try{
fg(3123,3123); //調(diào)用上面的方法,下面并且打印出結(jié)果,打印方法是打印方法的返回值//這里的數(shù)字沒(méi)多大用處,主要是不出錯(cuò)//根據(jù)上面的方法給出的變量所以這里必須要加//但是上面有輸入流,就直接將這個(gè)覆蓋了
System.out.println(fg(3123,3123));
}catch(de1 e) {//這個(gè)是try后面必須接的//括號(hào)里面的是異常類型,e是結(jié)果
dayin();
System.out.println("有錯(cuò)誤喲!");
System.out.println(e);
}
}
}
結(jié)論:
1,首先一個(gè)自定義異常的要有一個(gè)拋回來(lái)的異常類,這個(gè)類用于其它類執(zhí)行的方法時(shí)拋出來(lái)的異常,就拋在這個(gè)類里面
注意:這個(gè)類必須是繼承Exception(推薦)和RuntimeException
2,然后就可以在‘其他類’里面隨意加方法了,
注意:需要拋出異常就必須在方法名后面加throws 類名,格式:方法名 throws 類名(被拋異常類)
3,聲明好方法后,就可以了
注意:這里番外哈,1,如果里面有if判斷語(yǔ)句,可以在判斷下方在加個(gè)'異常拋出',格式:throw new 類名(被拋異常類)
2,注意:throw:是放在方法體里面的
throws:是放在方法體上面的(就是方法名上面)
4,接下來(lái)就是用try.....catch了。try里面放異常的方法(說(shuō)白了就是在try里面執(zhí)行方法體)
catch就是異常類型了,自定義異常,那‘異常類型’肯定就是‘被拋異常類名’
catch語(yǔ)句格式:catch(類名 返回值(結(jié)果)),結(jié)果隨意
這個(gè)語(yǔ)句一般放在開始執(zhí)行程序是調(diào)用方法那里
下面再舉一個(gè)例子:判斷輸出輸入的值是否是負(fù)數(shù)
package hhh;public classhh extends Exception{static inta,c;static int b=211;public static void de(inta1) throws hh{if(a1<0){throw newhh();
}
a=b*a1*21;
System.out.println("輸出:"+a);
}public static voidmain(String []args){try{
de(-6);
}catch(hh re){
System.out.println("負(fù)數(shù)無(wú)效");
}
}
}
執(zhí)行結(jié)果:拋出異常,執(zhí)行catch語(yǔ)句
例子二
package AA;
import java.util.InputMismatchException;
import java.util.Scanner;public class異常 extends Exception{
Scanner de=new Scanner(System.in);public voidks()throws 異常 {try{for(;;) {
System.out.println("請(qǐng)輸入數(shù)字");int dee=de.nextInt();if(dee<0)throw new異常();
System.out.println("正確");
}
}catch(異常 e) {
System.out.println("對(duì)不起你輸入的有誤!!");new異常().ks();
}catch(InputMismatchException ee) {
System.out.println("數(shù)字過(guò)大或者非數(shù)字");new異常().ks();
}
}public static voidmain(String[] args) throws 異常 {new異常().ks();
}
}/*編寫程序:判斷用戶輸入的是否為負(fù)數(shù),否則異常*/
執(zhí)行結(jié)果:
(內(nèi)部類、匿名類、匿名內(nèi)部類、抽象類、異常、終態(tài))
總結(jié)
以上是生活随笔為你收集整理的java 匿名 异常_JAVA类(内部类、匿名内部类、异常、自定义异常)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java string转decimal_
- 下一篇: java nio epoll_Java