以下轉載自神魂顛倒
[6]
ActionScript3.0 Socket編程(6)
6.處理使用Sockets時候引發的錯誤.
解決方法:
使用try/catch處理I/O和EOF(end of file)錯誤.
討論:
Socket和XMLSocket類對錯誤的處理很類似.不如,當調用connect()方法的時候,在下面任何壹個條件成立的情況下Socket和XMLSocket對象會拋出壹個類型為SecurityError的錯誤.
* 該.swf未通過本地安全認證.
* 端口號大於655535.
當調用XMLSocket對象的send()或者Socket對象的flush()的時候,如果socket還沒有連接這兩個方法都會拋出壹個類型為
IOError的錯誤.盡管妳可以將send()或者flush()方法放入try/catch結構塊中,妳也不能依賴於try/catch結構塊作為妳
應用程序的邏輯.更好的辦法是,在調用send()或者flush()方法之前使用壹個if語句首先判斷壹下Socket對象的connected屬性是
否為True.例如,下面的代碼使用了if語句作為程序邏輯的壹部分,當Socket對象當前不是連接狀態就調用
connectToSocketServer()方法.但是我們依然需要將flush()方法放到try/catch語句塊中.通過使用
try/catch語句塊將flush()方法拋出的錯誤寫入到日誌中:
復制內容到剪貼板代碼:
if ( socket.connected ) {
try {
socket.flush( );
}
catch( error:IOError ) {
logInstance.write( "socket.flush error\n" + error );
}
}
else {
connectToSocketServer( );
}
所有的Socket類的read方法都能夠拋出EOFError和IOError類型的錯誤.當妳試圖讀壹個數據,但是沒有任何可用數據將觸發EOF錯誤.當妳試圖從壹個已經關閉的Socket對象中對數據時將會拋出I/O錯誤.
除了Socket和XMLSocket類的方法能夠拋出的錯誤以外,這些類的對象還會分發錯誤事件.有兩種基本的錯誤事件類型,他們分別由 socketIOError和securityError錯誤引起.IOError事件為IOErrorEvent類型,當數據發送或接收失敗觸發該事 件.SecurityError事件是SecurityErrorEvent類型,當壹個Socket嘗試連接壹個服務器,但由於服務器不在安全沙箱範圍 之內或者端口號小於1024的時候觸發該錯誤事件.
註意:這兩種安全策略引起的錯誤都可以通過跨域訪問策略文件解決.
留言列表