好的,我有一個Circle在 SceneBuilder 中分配的組件。我想用 ImagePattern 物件填充這個 Circle,但是我遇到了一個奇怪的問題。我從資料庫中的許多 URL 中分配了許多影像,并且它們僅在我單擊它們時才設定,并且某些鏈接似乎已損壞,但由于某種原因,我無法阻止我的程式崩潰使用試著抓。
以下是作業鏈接的示例:
https://a0.muscache.com/im/users/67564/profile_pic/1320663729/original.jpg?aki_policy=profile_x_medium
https://a0.muscache.com/im/users/168920/profile_pic/1279390466/original.jpg?aki_policy=profile_x_medium
https://a0.muscache.com/im/users/502496/profile_pic/1385405597/original.jpg?aki_policy=profile_x_medium
這是使我的程式崩潰的鏈接示例:
https://a0.muscache.com/im/pictures/c5b5bc4e-0133-4103-b68e-66f33bbf9e27.jpg?aki_policy=profile_x_medium
如您所見,該鏈接指向 Null 目錄,我在控制臺中收到此錯誤:
Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Image must be non-null
所以我假設我可以用一個簡單的 try/catch 來解決這個問題,所以我做了以下事情:
try {
circle.setFill(new ImagePattern(new Image("https://a0.muscache.com/im/pictures/c5b5bc4e-0133-4103-b68e-66f33bbf9e27.jpg?aki_policy=profile_x_medium")));
}
catch (Exception e){
e.printStackTrace();
}
和nada,它沒有抓住我的錯誤。我嘗試使用正確的 IllegalArgumentException 捕獲,我嘗試忽略捕獲,沒有區別。
我在下面對我的問題進行了迷你重現,但錯誤仍然很普遍:
public class Test extends Application {
@Override
public void start(Stage stage){
BorderPane root = new BorderPane();
Circle circle = new Circle(50);
root.setCenter(circle);
// Works fine (Working link)
//circle.setFill(new ImagePattern(new Image("https://a0.muscache.com/im/users/67564/profile_pic/1320663729/original.jpg?aki_policy=profile_x_medium")));
// Dies and cries (Broken link)
try {
circle.setFill(new ImagePattern(new Image("https://a0.muscache.com/im/pictures/c5b5bc4e-0133-4103-b68e-66f33bbf9e27.jpg?aki_policy=profile_x_medium")));
}
catch (Exception e){
e.printStackTrace();
}
scene = new Scene(root);
stage.setTitle("test");
stage.setScene(scene);
stage.show();
}
}
只是為了確認我的目標是什么,如果鏈接無效,我只想讓我的程式完全忽略這一行,我該怎么做?謝謝。
另外,如果對我為什么要嘗試加載死鏈接有任何困惑,正如我在從資料庫加載影像之前所說的那樣,所以我不知道哪些鏈接有效,哪些無效,我不知道知道如何檢查和研究似乎只是告訴我使用 try/catch。
uj5u.com熱心網友回復:
好吧,沒關系,我找到了解決方法,有一種方法Image可以檢查是否有錯誤:
image.isError()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/448370.html
上一篇:并行檢查死URL
