日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

此异常最初是在此调用堆栈中引发的:_【8】进大厂必须掌握的面试题Java面试异常和线程...

發布時間:2023/12/10 java 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 此异常最初是在此调用堆栈中引发的:_【8】进大厂必须掌握的面试题Java面试异常和线程... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“全棧程序員社區”,星標公眾號

重磅干貨,第一時間送達

Q1。錯誤和異常有什么區別?

錯誤是在運行時發生的不可恢復的情況。如OutOfMemory錯誤。這些JVM錯誤無法在運行時修復。盡管可以在catch塊中捕獲錯誤,但是應用程序的執行將停止并且無法恢復。

而異常是由于輸入錯誤或人為錯誤等原因而發生的情況。例如,如果指定的文件不存在,則將拋出FileNotFoundException。否則,如果嘗試使用null引用,則會發生NullPointerException。在大多數情況下,有可能從異常中恢復(可能是通過向用戶提供輸入正確值的反饋等)。

Q2。您如何處理Java異常?

Java中有五個關鍵字用于處理異常:

  • try

  • catch

  • finally

  • throw

  • throws

  • Q3。Checked Exception和Unchecked Exception有什么區別?

    檢查異常

    • 擴展Throwable類的類(RuntimeException和Error除外)被稱為檢查異常。

    • 被檢查的異常在編譯時被檢查。

    • 示例:IOException,SQLException等。

    未經檢查的異常

    • 擴展RuntimeException的類稱為未檢查的異常。

    • 未檢查的異常不會在編譯時檢查。

    • 例如:ArithmeticException,NullPointerException等。

    Q4。關鍵字final,finally和finalize有什么目的?

    final:**

    Final用于對類,方法和變量施加限制。不能繼承final類,不能覆蓋final方法,并且不能更改final變量值。讓我們看下面的示例,以更好地理解它。

    class FinalVarExample {
    public static void main( String args[]){
    final int a=10; // Final variable
    a=50; //Error as value can't be changed
    }
    }

    finally

    最后用于放置重要代碼,無論是否處理異常,都將執行該代碼。讓我們看下面的示例,以更好地理解它。

    class FinallyExample {
    public static void main(String args[]){
    try {
    int x=100;
    }catch(Exception e) {
    System.out.println(e);
    }finally {
    System.out.println("finally block is executing");
    }
    }
    }

    finalize

    Finalize用于在垃圾回收之前就執行清理處理。讓我們看下面的示例,以更好地理解它。

    class FinalizeExample {
    public void finalize() {
    System.out.println("Finalize is called");
    }
    public static void main(String args[]){
    FinalizeExample f1=new FinalizeExample();
    FinalizeExample f2=new FinalizeExample();
    f1= NULL;
    f2=NULL;
    System.gc();
    }
    }

    Q5。throw和throws有什么區別?

    throwthrows
    引發用于顯式引發異常。引發用于聲明異常。
    已檢查的異常不能僅通過throw傳播。可以使用throws傳播檢查的異常。
    引發后跟一個實例。投擲之后是上課。
    在方法中使用了throw。拋出與方法簽名一起使用。
    您不能拋出多個異常您可以聲明多個異常,例如public void method()引發IOException,SQLException。

    Q6。什么是Java中的異常層次結構?

    層次結構如下:

    Throwable是所有Exception類的父類。異常有兩種類型:檢查的異常和UncheckedExceptions或RunTimeExceptions。兩種類型的異常都擴展了Exception類,而錯誤又進一步分為虛擬機錯誤和斷言錯誤。

    Q7。如何創建自定義異常?

    要創建您自己的異常,請擴展Exception類或其任何子類。

    • class New1Exception extends Exception {} //這將創建Checked Exception

    • 類NewException擴展了IOException {} //這將創建Checked異常

    • 類NewException擴展了NullPonterExcpetion {} //這將創建UnChecked異常

    Q8。Java異常類的重要方法有哪些?

    異常及其所有子類均未提供任何特定方法,并且所有方法均在基類Throwable中定義。

  • String getMessage() –此方法返回Throwable消息字符串,并且可以在通過其構造函數創建異常時提供該消息。

  • String getLocalizedMessage()–提供此方法,以便子類可以重寫它以向調用程序提供特定于語言環境的消息。此方法的可拋出類實現僅使用getMessage()方法即可返回異常消息。

  • Synchronized Throwable getCause() –此方法返回異常原因,或者返回null id,原因未知。

  • String toString() –此方法以String格式返回有關Throwable的信息,返回的String包含Throwable類的名稱和本地化消息。

  • void printStackTrace() –此方法將堆棧跟蹤信息打印到標準錯誤流,此方法已重載,我們可以傳遞PrintStream或PrintWriter作為參數,以將堆棧跟蹤信息寫入文件或流。

  • Q9。進程和線程之間有什么區別?

    ProcessThread
    定義程序的執行實例稱為進程。線程是進程的子集。
    通訊進程必須使用進程間通信與同級進程進行通信。線程可以直接與其進程中的其他線程通信。
    控制進程只能控制子進程。線程可以對同一進程的線程行使相當大的控制權。
    變化父進程中的任何更改都不會影響子進程。主線程中的任何更改都可能影響該進程其他線程的行為。
    記憶在單獨的內存空間中運行。在共享內存空間中運行。
    受控制于進程由操作系統控制。線程由程序中的程序員控制。
    依存關系流程是獨立的。線程是依賴的。

    Q10。什么是finally塊?有沒有什么情況下最終將不會執行?

    最終塊是始終執行一組語句的塊。它始終與try塊相關聯,無論是否發生任何異常。是的,如果程序通過調用System.exit()或導致致命錯誤(導致進程中止)退出,則最終將不會執行。

    Q11。什么是同步?

    同步是指多線程。同步的代碼塊一次只能由一個線程執行。由于Java支持執行多個線程,因此兩個或多個線程可以訪問相同的字段或對象。同步是使所有并發線程在執行中保持同步的過程。同步避免了由于共享內存視圖不一致而導致的內存一致性錯誤。當一個方法被聲明為已同步時,線程將保持該方法對象的監視器。如果另一個線程正在執行同步方法,則該線程將被阻塞,直到該線程釋放監視器。

    Q12。我們可以在單個try塊下寫入多個catch塊嗎?

    是的,我們可以在單個try塊下包含多個catch塊,但是方法應從特定到一般。讓我們通過一個編程示例來理解這一點。

    public class Example {
    public static void main(String args[]) {
    try {
    int a[] = new int[10];
    a[10] = 10 / 0;
    } catch (ArithmeticException e) {
    System.out.println("Arithmetic exception in first catch block");
    } catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("Array index out of bounds in second catch block");
    } catch (Exception e) {
    System.out.println("Any exception in third catch block");
    }
    }
    }

    Q13。Java異常類的重要方法有哪些?

    方法在基類Throwable中定義。Java異常類的一些重要方法如下所述。

  • String getMessage() –此方法返回有關異常的消息String。可以通過其構造函數提供消息。

  • public StackTraceElement [] getStackTrace()–此方法返回一個數組,其中包含堆棧跟蹤中的每個元素。索引0處的元素表示調用堆棧的頂部,而數組中的最后一個元素表示調用堆棧底部的方法。

  • 同步的Throwable getCause() –此方法返回Throwable對象表示的異常原因或null ID。

  • String toString() –此方法以String格式返回信息。返回的字符串包含Throwable類的名稱和本地化消息。

  • void printStackTrace() –此方法將堆棧跟蹤信息打印到標準錯誤流。

  • Q14。什么是Java中的OutOfMemoryError?

    OutOfMemoryError是java.lang.Error的子類,通常在我們的JVM內存不足時發生。

    Q15。什么是線程?

    線程是可以由調度程序獨立執行的最小編程指令。在Java中,所有程序都將至少具有一個線程,該線程稱為主線程。當程序開始執行時,此主線程由JVM創建。主線程用于調用程序的main()。

    Q16。創建線程的兩種方法是什么?

    在Java中,可以通過以下兩種方式創建線程:

    • 通過實現Runnable接口。

    • 通過擴展線程

    Q17。Java中有哪些不同類型的垃圾收集器?

    Java中的垃圾收集程序,可以幫助進行隱式內存管理。由于在Java中,可以使用new關鍵字動態創建對象,一旦創建對象,該對象將消耗一些內存。一旦工作完成,并且不再有對象的引用,使用垃圾回收的Java將破壞該對象并釋放其占用的內存。Java提供了四種類型的垃圾收集器:

    • 串行垃圾收集器

    • 并行垃圾收集器

    • CMS垃圾收集器

    • G1垃圾收集器

    往期推薦

    【7】進大廠必須掌握的面試題-Java面試-Jsp

    【6】進大廠必須掌握的面試題-Hibernate

    【5】進大廠必須掌握的面試題-Java面試-spring

    【4】進大廠必須掌握的面試題-Java面試-jdbc

    總結

    以上是生活随笔為你收集整理的此异常最初是在此调用堆栈中引发的:_【8】进大厂必须掌握的面试题Java面试异常和线程...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。