[英]try catch block in Matlab
所以,我正在通過imread('D:\\pic1\\foo.jpg')
閱讀數百個圖像文件,其中一些像imread('D:\\pic2\\Thumbs.db')
。 在閱讀之后我將存儲在這樣的數據庫中, train(i) = imread('D:\\pic1\\foo.jpg')
。 問題在於imread('D:\\pic2\\Thumbs.db')
,這些文件的讀取顯然會出錯。 我想像這樣緩解這個問題:
for i=1:N
try
train(i) = imread(link{i})
%link{i} can be 'D:\pic2\Thumbs.db' or 'D:\pic1\foo.jpg'
catch
disp('Error')
end
end
問題出在這里的try塊中。 有兩件事正在發生,一件是讀取文件,另一件是為train(i)
分配imread值。 現在,這很重要,只有成功的imread()
應該有一個賦值,失敗時會出現錯誤。 Matlab通過catch塊來處理錯誤,沒有一個塊來處理我可以完成賦值的成功條件,這樣我就可以毫不費力地讀寫。
我想要這樣的東西:
j = 0;
for i=1:N
try:
imread(links{i})
if success:
train(j) = imread(links{i})
j = j+1;
if fail:
error
end
end
我只是在搜索Matlab文檔時想出了嘗試和捕獲,如果有任何東西可以幫助我簡潔地編寫代碼,我將非常感激。
您可以使用continue
語句和臨時變量解決此問題,如下所示:
for i=1:N
try
tempVar = imread(link{i});
catch
disp(['Error reading file ' link{i}]);
continue
end
train(i) = tempVar;
end
當imread
拋出錯誤時,控制權將傳遞給catch
塊,該塊顯示一條消息,然后調用continue
將控制傳遞給for循環的下一次迭代,跳過任何后續命令。 當imread
成功時,運行try\\catch
塊之后的代碼,將imread
的輸出分配給變量train
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.