ø
簡介 本文主要介紹linq to sql 中常見的異常,以及對應的解決辦法。包括以下內容:
1.左連線情況下,右表非空型別字段可能丟擲異常 1.
左連線情況下,右表非空型別字段可能丟擲異常
說明:userinfo.customerid
關聯 customer.id,為多對一的關係。但是 userinfo.customerid 字段可能為 null, 所以執行以下語句將報錯:
1)linq
語句 var
datas1 = (
from
t1 in
datacontext.userinfoes
join
t2 in
datacontext.customers
ont1.customerid
equals
t2.id
into
t12
from
t3 in
t12.defaultifempty()
where
t1.id > 5000
select
new
).take(3).toarray();
2)生成sql
select
[limit1]
.[c1]
as [c1],
[limit1]
.[id]
as [id],
[limit1]
.[customerid]
as [customerid],
[limit1]
.[id1]
as [id1]
from
( select
top (3)
[extent1]
.[id]
as [id],
[extent1]
.[customerid]
as [customerid],
1 as
[c1],
[extent2]
.[id]
as [id1]
from
[dbo]
.[userinfo]
as [extent1]
left
outer
join
[dbo]
.[customer]
as [extent2]
on [extent1]
.[customerid]
= [extent2]
.[id]
where
[extent1]
.[id]
>
5000 )
as [limit1]
3)執行結果
4)將丟擲異常
system.invalidoperationexception:「
到值型別「system.int64」的強制轉換失敗,因為具體化值為null。結果型別的泛型引數或查詢必須使用可以為null 的型別。」
5)解決辦法:
1.分析:其實很簡單,因為是左連線,左表記錄不能與右表連線時,右表字段將以 null 返回。但是程式中是以long 型別接收,不能為null 值,所以就報錯了。
2.那我們是不是將非空型別(long)改為可空型別(
nullable)
就可以了?沒錯,我們只需要改寫一行**即可:
customerid2 = (
long
?)t3.id
常見socket讀寫異常及錯誤
eagain的錯誤 一般是對非阻塞埠讀寫產生的錯誤。1 傳送產生 傳送緩衝區剩餘空間小於傳送包大小。可以通過修改 tcp sendspace,使之大於send中的size引數 no p o tcp sendspace 65536 2 接收產生 errno 為11,算是異常,等待再次觸發讀取。eint...
python 常見異常及try語句
1 assertionerror 斷言語句 assert 失敗 2 attributerrrror 嘗試訪問位置的物件屬性 3 indexerror 索引超出系列的範圍 4 keyerror 字典中查詢乙個不存在的關鍵字 注意 使用.get方法即使關鍵字不存在也不會報錯即程式不會垮掉 5 namee...
異常 常見的異常
在程式設計中異常處理會被頻繁的使用,所以有必要知道一些常見的異常。nullpointexception 空指標異常,屬於執行時異常。簡單來說就是呼叫了未經初始化的物件或者不存在的物件,或者是訪問或修改null物件的屬性或方法。classnotfoundexception 找不到類異常。出現這種情況一...