Latest web development tutorials

JSP penanganan eksepsi

Saat menulis aplikasi JSP, programer mungkin kehilangan beberapa BUG, ​​BUG mungkin muncul di mana saja dalam program ini. kode JSP umumnya kategori pengecualian berikut:

  • pengecualian diperiksa: diperiksa pengecualian adalah kesalahan pengguna khas atau programmer kesalahan yang tak terduga. Sebagai contoh, jika sebuah file yang akan dibuka, tapi tidak dapat menemukan file, maka eksepsi dilemparkan. Anomali ini tidak bisa lagi mengkompilasi hanya diabaikan.
  • Runtime pengecualian: runtime programmer pengecualian mungkin telah dihindari, anomali ini akan diabaikan pada waktu kompilasi.
  • Kesalahan: Tidak ada pengecualian, tapi masalahnya adalah bahwa itu adalah di luar kendali pengguna atau programmer. Kesalahan sering diabaikan dalam kode, Anda tidak bisa mengambilnya bagaimana. Sebagai contoh, atau kesalahan stack overflow. Kesalahan ini akan diabaikan pada waktu kompilasi.

Bagian ini akan memberikan cara yang sederhana dan elegan beberapa untuk menangani pengecualian runtime dan kesalahan.


Gunakan Exception Objects

pengecualian objek adalah instance dari subclass Throwable, hanya tersedia di halaman kesalahan. Tabel berikut ini berisi beberapa kelas Throwable cara penting:

Tidak. Metode & deskripsi
1 public String getMessage ()

Mengembalikan pengecualian. Informasi ini diawali di Throwable konstruktor
2 publik ThrowablegetCause ()

Mengembalikan penyebab pengecualian, objek tipe Throwable
3 String public toString ()

Mengembalikan nama kelas
4 public void printStackTrace ()

Pengecualian jejak stack output ke System.err
5 publik StackTraceElement [] getStackTrace ()

Dalam bentuk elemen jejak stack array mengembalikan sebuah jejak pengecualian tumpukan
6 ThrowablefillInStackTrace publik ()

Jejak stack saat mengisi objek Throwable

JSP memberikan pilihan untuk menentukan halaman kesalahan untuk setiap halaman JSP. Setiap kali halaman melempar pengecualian, JSP container secara otomatis akan memanggil halaman kesalahan.

Contoh berikut main.jsp menentukan halaman kesalahan. Gunakan <% @ page errorpage = "XXXXX"%> direktif menentukan halaman kesalahan.

<%@ page errorPage="ShowError.jsp" %>

<html>
<head>
   <title>Error Handling Example</title>
</head>
<body>
<%
   // Throw an exception to invoke the error page
   int x = 1;
   if (x == 1)
   {
      throw new RuntimeException("Error condition!!!");
   }
%>
</body>
</html>

Sekarang, tulis ShowError.jsp dokumen berikut:

<%@ page isErrorPage="true" %>
<html>
<head>
<title>Show Error Page</title>
</head>
<body>
<h1>Opps...</h1>
<p>Sorry, an error occurred.</p>
<p>Here is the exception stack trace: </p>
<pre>
<% exception.printStackTrace(response.getWriter()); %>

Mencatat, ShowError.jsp berkas menggunakan <% page @ isErrorPage = "true"%> direktif, yang memberitahu compiler JSP perlu menghasilkan variabel pengecualian misalnya.

Sekarang cobalah untuk mengakses halaman main.jsp, akan menghasilkan hasil sebagai berikut:

java.lang.RuntimeException: Error condition!!!
......

Opps...
Sorry, an error occurred.

Here is the exception stack trace:

Gunakan tag JSTL di halaman kesalahan

tag JSTL dapat digunakan untuk menulis halaman kesalahan ShowError.jsp. Contoh ini kode dan logika dalam kode contoh hampir sama, tetapi dalam kasus ini kode memiliki struktur yang lebih baik, dan dapat memberikan informasi lebih lanjut:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page isErrorPage="true" %>
<html>
<head>
<title>Show Error Page</title>
</head>
<body>
<h1>Opps...</h1>
<table width="100%" border="1">
<tr valign="top">
<td width="40%"><b>Error:</b></td>
<td>${pageContext.exception}</td>
</tr>
<tr valign="top">
<td><b>URI:</b></td>
<td>${pageContext.errorData.requestURI}</td>
</tr>
<tr valign="top">
<td><b>Status code:</b></td>
<td>${pageContext.errorData.statusCode}</td>
</tr>
<tr valign="top">
<td><b>Stack trace:</b></td>
<td>
<c:forEach var="trace" 
         items="${pageContext.exception.stackTrace}">
<p>${trace}</p>
</c:forEach>
</td>
</tr>
</table>
</body>
</html>

Hasilnya adalah sebagai berikut:

jsp-exeception-1


Gunakan mencoba ... menangkap blok

Jika Anda ingin menempatkan halaman pengecualian penanganan, dan untuk pengecualian yang berbeda ditangani secara berbeda, maka Anda perlu menggunakan blok try ... catch.

Contoh berikutnya menunjukkan cara menggunakan blok try ... catch, kode akan ditempatkan di main.jsp:

<html>
<head>
   <title>Try...Catch Example</title>
</head>
<body>
<%
   try{
      int i = 1;
      i = i / 0;
      out.println("The answer is " + i);
   }
   catch (Exception e){
      out.println("An exception occurred: " + e.getMessage());
   }
%>
</body>
</html>

Cobalah untuk mengunjungi main.jsp, akan menghasilkan hasil sebagai berikut:

An exception occurred: / by zero