java 匿名 異常_JAVA類(內部類、匿名內部類、異常、自定義異常)

內部類

package AA;public class類 {int de=123;

StringBuffer dee=newStringBuffer();public class成員內部類{public voidff() {

System.out.println("這是成員內部類方法");

}

}/*1.可以訪問外部類所有的成員,包括被聲明為私有(private)的;

2.可以使用任何訪問權限修飾符,包括protected和private;*/

public voidff1() {int de1=12;class局部內部類{public voidff() {

System.out.println("局部內部類方法");

System.out.println(de);

}

}new局部內部類().ff();

}/*1.不允許使用任何訪問權限修飾符;

2.創建局部內部類的對象的語法,必須在聲明局部內部類之后;調用只能在該方法里

3.可以訪問外部類所有的成員,包括被聲明為私有(private)的;*/

private static class靜態內部類{public voidff() {

System.out.println("這是靜態內部類方法");

}

}/*1.只能訪問static成員

2.可以使用任何訪問權限修飾符,包括protected和private;

3.可以在其它類中直接創建靜態內部類的對象,語法格式為:*/

public voiddy() {new 成員內部類().ff();//調用成員內部類方法

//調用方法二:? ?類.成員內部類 de=new 類.成員內部類();

new 類().ff1();//調用局部內部類方法

new 靜態內部類().ff();//調用靜態內部類方法

//調用方法二:類.靜態內部類? de=new 靜態內部類();

}public static voidmain(String[] args) {new類().dy();

}

}

參考:

匿名內部類

參考:

抽象類

異常

先來點基礎的:

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");

}

}

}

上面代碼解釋了:一個基本異常的基本格式,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("請輸入數值1");

a=de1.nextInt();

System.out.println("請輸入數值2");

b=de1.nextInt();if(a<0||b<0) {throw new de1("負數錯誤");//拋出異常

}if(a>100||b>100) {throw new de1("數大于100錯誤");

}return a+b;

}public static voiddayin() {

System.out.println("異常啦");

}public static voidmain(String[] args) {try{

fg(3123,3123); //調用上面的方法,下面并且打印出結果,打印方法是打印方法的返回值//這里的數字沒多大用處,主要是不出錯//根據上面的方法給出的變量所以這里必須要加//但是上面有輸入流,就直接將這個覆蓋了

System.out.println(fg(3123,3123));

}catch(de1 e) {//這個是try后面必須接的//括號里面的是異常類型,e是結果

dayin();

System.out.println(e);

}

}

}//1,程序通過try走,并且執行fg方法//2,當用戶輸入數值時,會進行判斷,如果不符合就會拋出異常(這里是拋在de1類里面,關鍵字:throw new 類名)//3,try執行已經異常了,所以將會執行catch,而catch可以有多個,那個catch則會判斷try異常屬于哪一類型的異常//4,判斷完后,將會執行catch里面的語句,用來提示用戶//4的注意:上面的判斷下面什么(負數錯誤)(da數錯誤),其實是de1類的構造string方法,可以去掉,直接在catch里面加提語句都一樣//列如下面:去掉構造,在catch里面加已是語句

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("請輸入數值1");

a=de1.nextInt();

System.out.println("請輸入數值2");

b=de1.nextInt();if(a<0||b<0) {throw new de1();//拋出異常,說白了就是

}if(a>100||b>100) {throw newde1();

}return a+b;

}static voiddayin() {

System.out.println("異常啦");

}public static voidmain(String[] args) {try{

fg(3123,3123); //調用上面的方法,下面并且打印出結果,打印方法是打印方法的返回值//這里的數字沒多大用處,主要是不出錯//根據上面的方法給出的變量所以這里必須要加//但是上面有輸入流,就直接將這個覆蓋了

System.out.println(fg(3123,3123));

}catch(de1 e) {//這個是try后面必須接的//括號里面的是異常類型,e是結果

dayin();

System.out.println("有錯誤喲!");

System.out.println(e);

}

}

}

結論:

1,首先一個自定義異常的要有一個拋回來的異常類,這個類用于其它類執行的方法時拋出來的異常,就拋在這個類里面

注意:這個類必須是繼承Exception(推薦)和RuntimeException

2,然后就可以在‘其他類’里面隨意加方法了,

注意:需要拋出異常就必須在方法名后面加throws 類名,格式:方法名 throws 類名(被拋異常類)

3,聲明好方法后,就可以了

注意:這里番外哈,1,如果里面有if判斷語句,可以在判斷下方在加個'異常拋出',格式:throw new 類名(被拋異常類)

2,注意:throw:是放在方法體里面的

throws:是放在方法體上面的(就是方法名上面)

4,接下來就是用try.....catch了。try里面放異常的方法(說白了就是在try里面執行方法體)

catch就是異常類型了,自定義異常,那‘異常類型’肯定就是‘被拋異常類名’

catch語句格式:catch(類名 返回值(結果)),結果隨意

這個語句一般放在開始執行程序是調用方法那里

下面再舉一個例子:判斷輸出輸入的值是否是負數

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("負數無效");

}

}

}

執行結果:拋出異常,執行catch語句

例子二

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("請輸入數字");int dee=de.nextInt();if(dee<0)throw new異常();

System.out.println("正確");

}

}catch(異常 e) {

System.out.println("對不起你輸入的有誤!!");new異常().ks();

}catch(InputMismatchException ee) {

System.out.println("數字過大或者非數字");new異常().ks();

}

}public static voidmain(String[] args) throws 異常 {new異常().ks();

}

}/*編寫程序:判斷用戶輸入的是否為負數,否則異常*/

執行結果:

c68013b74a95de91763a298ebee88a5c.png

(內部類、匿名類、匿名內部類、抽象類、異常、終態)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281854.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281854.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ASP.NET 多環境下配置文件web.config的靈活配置---轉

注意&#xff1a;本功能在.Net Core中已經不可用&#xff0c;暫時需手動修改web.config中的信息&#xff0c;或者將其設置在appsettings.XXX.json中&#xff0c;然后再使用web.config中的環境變量來制定使用的具體appsettings文件。 轉自&#xff1a;https://www.cnblogs.com/h…

英語之各類人群

工作狂&#xff1a;workaholic 月光族&#xff1a;moonlight group 電燈泡&#xff1a;third wheel 菜鳥&#xff1a;newbie 夜貓子&#xff1a;night owl 路癡&#xff1a;somebody has no sense of derection 宅男宅女&#xff1a;homebody 時尚的潮人&#xff1a;trend sett…

Wget CVE-2014-4877:FTP 符號鏈接任意文件系統訪問

Wget 爆出 CVE-2014-4877 漏洞&#xff1a;FTP 符號鏈接任意文件系統訪問。 Package: wgetVersion: 1.15-1Severity: important Upstream fix&#xff1a; http://git.savannah.gnu.org/cgit/wget.git/commit/?id18b0979357ed7dc4e11d4f2b1d7e0f5932d82aa7 References&#xf…

JavaScript 學習提升

javascript 技能提升 理解閉包 閉包&#xff0c;官方對閉包的解釋是&#xff1a;一個擁有許多變量和綁定了這些變量的環境的表達式&#xff08;通常是一個函數&#xff09;&#xff0c;因而這些變量也是該表達式的一部分。閉包的特點&#xff1a;1. 作為一個函數變量的一個引用…

Uranium UI Kit

Uranium UI Kit控件名&#xff1a;Uranium UI Ki作者&#xff1a;enisn原文鏈接&#xff1a; https://github.com/enisn/UraniumUI項目使用 Apache-2.0 開源許可協議。Uranium 是用于 .NET MAUI 的免費和開源 UI 工具包。它提供了一組控件和實用程序來構建現代應用程序。它建…

數據庫監控框架 oneproxy-monitor 開源了

OneProxy-Monitor 是數據庫監控的框架&#xff0c;通過這個框架可以快速的開發出一款數據庫的監控軟件。目前已經在這個框架下面開發出來了sql server的監控軟件oneproxy-for-sqlserver&#xff0c; postgresql的監控軟件oneproxy-for-postgresql。并且還可以作為協議成的調試軟…

java nio epoll_Java NIO 選擇器(Selector)的內部實現(poll epoll)

http://blog.csdn.net/hsuxu/article/details/9876983之前強調這么多關于linux內核的poll及epoll&#xff0c;無非是想讓大家先有個認識&#xff1a;Java NIO中的選擇器依賴操作系統內核的這些系統調用&#xff0c;我們這里只講解與linux內核相關的NIO實現&#xff0c;當然&…

Next.js 7發布,構建速度提升40%

Next.js團隊發布了其開源React框架的7版本。該版本的Next.js主要是改善整體的開發體驗&#xff0c;包括啟動速度提升57%、開發時的構建速度提升40%、改進錯誤報告和WebAssembly支持。\\Next.js是一個React框架&#xff0c;它的主要目標是在生產環境中提供出色的性能和良好的開發…

《Java多線程編程核心技術》讀后感(十五)

線程的狀態 線程對象在不同的運行時期有不同的狀態&#xff0c;狀態信息就存在與State枚舉類中。 驗證New,Runnable&#xff0c;Terminated new:線程實例化后還從未執行start()方法時的狀態 runnable&#xff1a;線程進入運行的狀態 terminated&#xff1a;線程被銷毀時的狀態 …

隊列(queue)

隊列(queue)和棧一樣支持push和pop兩個操作。但與棧不同的是,pop兩個操作。但與棧的不同的是&#xff0c;pop完成的不是取出最頂端的元素&#xff0c;而是最底端的元素。也就是說最初放入的元素能夠最先被取出&#xff08;這種行為被叫做FIFO:First In First Out&#xff0c;即…

一題多解,ASP.NET Core應用啟動初始化的N種方案[上篇]

ASP.NET Core應用本質上就是一個由中間件構成的管道&#xff0c;承載系統將應用承載于一個托管進程中運行起來&#xff0c;其核心任務就是將這個管道構建起來。在ASP.NET Core的發展歷史上先后出現了三種應用承載的編程方式&#xff0c;而且后一種編程模式都提供了針對之前編程…

java程序猿面試問缺點怎么回答_JAVA程序員面試32問,你能回答多少題

第一&#xff0c;談談final&#xff0c; finally&#xff0c; finalize的區別。第二&#xff0c;Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類&#xff0c;是否可以implements(實現)interface(接口)&#xff1f;第三&#xff0c;Static Nested Class 和 In…

ExecutorService——shutdown方法和awaitTermination方法

ExecutorService的關閉shutdown和awaitTermination為接口ExecutorService定義的兩個方法&#xff0c;一般情況配合使用來關閉線程池。 方法簡介shutdown方法&#xff1a;平滑的關閉ExecutorService&#xff0c;當此方法被調用時&#xff0c;ExecutorService停止接收新的任務并且…

WPF 簡單模仿 VSCode 界面布局

WPF 簡單模仿 VSCode 界面布局本文經原作者授權以原創方式二次分享&#xff0c;歡迎轉載、分享。WPF 簡單模仿 VSCode 界面布局作者&#xff1a;弈虎-呂女士會翻墻原文鏈接&#xff1a; https://github.com/Chen-Lin-Zhao-Wei/WPFLikeVSCode分享一篇群友這幾天自己寫的 WPF 簡…

compare()方法+使用compare方法

compare()方法 compare(lob1,lob2,amount,offset_1,offset_2) 1用于比較2個lob存儲的數據&#xff0c;比較的方式是從指定偏移量開始&#xff0c;對指定數量的字符或者字節進行比較。 2如果比較內容相同&#xff0c;返回0&#xff0c;否則返回-1或1. 3如果參數設置有誤或不合…

linux 下 mysql默認表_linux環境下mysql默認是區分表名大小寫的

在linux環境下&#xff0c;mysql默認表明是區分大小寫的&#xff0c;我們可以查看全局變量發現:mysql> show variables like lower%;-------------------------------| Variable_name | Value |-------------------------------| lower_case_file_system | OFF || lower_cas…

dot-- 資源匯總

http://graphviz.org/doc/info/attrs.htmlhttp://graphs.grevian.org/http://graphs.grevian.org/examplehttp://www.linuxdevcenter.com/pub/a/linux/2004/05/06/graphviz_dot.html轉載于:https://www.cnblogs.com/itzxy/p/7860276.html

兩將軍問題和TCP三次握手

兩將軍問題&#xff0c;又被稱為兩將軍悖論、兩軍問題&#xff0c; 是一個經典的計算機思想實驗。首先&#xff0c; 為避免混淆&#xff0c;我們需要認識到兩將軍問題雖然與拜占庭將軍問題相關&#xff0c;但兩者不是一個東西。拜占庭將軍問題是一個更通用的兩將軍問題版本&…

微信小程序開發系列五:微信小程序中如何響應用戶輸入事件

2019獨角獸企業重金招聘Python工程師標準>>> 微信小程序開發系列教程 微信小程序開發系列一&#xff1a;微信小程序的申請和開發環境的搭建 微信小程序開發系列二&#xff1a;微信小程序的視圖設計 微信小程序開發系列三&#xff1a;微信小程序的調試方法 微信小程序…

理解Object.defineProperty的作用

Object.defineProperty 是vue中雙向綁定的基礎。vue是通過數據劫持的方式來做數據綁定的&#xff0c;最核心的方法是通過 Object.defineProperty()方法來實現對屬性的劫持&#xff0c;達到能監聽到數據的變動。要實現數據的雙向綁定&#xff0c; 當使用存取器描述屬性的特性的時…