JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 FAQ - 如何處理 java.lang.NullPointerException [精華]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2003-09-23 16:20 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
轉貼 (by anthonycs)

public class NullPointerException
extends RuntimeException
Thrown when an application attempts to use null in a case where an object is required. These include:

Calling the instance method of a null object.
Accessing or modifying the field of a null object.
Taking the length of null as if it were an array.
Accessing or modifying the slots of null as if it were an array.
Throwing null as if it were a Throwable value.
Applications should throw instances of this class to indicate other illegal uses of the null object.

-------------------------------------------------------------------------------------------------

這個錯誤大概是初學JSP的人最常犯的錯誤吧
簡單講, 這是在Run time時表單元素傳遞失敗造成的Exception
以下面這一行為例
1
String[] searchpositionid=request.getParameterValues("searchpositionid");
執行到這一行時如果找不到表單元素searchpositionid
request.getParameterValues(String name)回傳的是null
searchpositionid這個 String[] reference就不再對應任何String[] object
在這情況下, 就不該使用searchpositionid來操控不存在的String[] object
當然, 使用searchpositionid[index]來存取不存在的String object也不行

在上述情況執行到這一行就會產生NullPointerException
1
2
String sql="insert into recorduserdata values('"+userid+"','"+searchpositionid[0]+"','"+userip+"')";
smt.executeUpdate(sql);


所以寫jsp程式一定要注意表單元素是否傳遞正確
大部分初學者都忽略了這點, 直接拿來用
另外, 盡量在表單輸入的網頁加上表單驗證的程式
確定表單元素可正確傳遞給jsp網頁, 可以避免掉不必要的此類錯誤

下面這個例子是javascript的表單驗證程式
可防止單行文字方塊沒有填值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<SCRIPT LANGUAGE="JavaScript">
function CheckForm()
{
  if(document.userForm.name.value=="")  //name欄位為空值
  {
    alert("請輸入您的姓名");
    document.userForm.name.focus();
    return false;
  }  
            
             //.....這裡可以依照上述程式碼再繼續檢查其他表單元素
 
  return confirm('確定送出嗎?');    //全部ok,確認送出之對話方塊
}
</SCRIPT>
並且在表單的tag裡面加上這一行
1
<form method="POST" name="userForm" action="loginProcess.jsp" onSubmit="return CheckForm()">
這麼一來就可以在表單傳送出去之前先檢查是否有填值

最後, 要檢查Email格式也可以喔
1
2
3
4
5
6
7
function checkmail(myEmail) {
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(myEmail.value)){
  return (true);
  }
  alert("E-mail格式不正確");
  return (false);
}


anthonycs edited on 2004-11-03 19:25
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
61037 [精華] FAQ - 如何處理 java.lang.NullPointerException worookie 2180 2003-09-23 16:20
51572 Re:FAQ - 如何處理 java.lang.NullPointerException ring925 14 2005-10-17 08:49
50447 Re:FAQ - 如何處理 java.lang.NullPointerException require 422 2005-12-31 15:34
» JWorld@TW »  Java 新手區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8