- Home /
Best Practices for exception handling Resource.Load
I'm learning about exception handling and am looking for advice on the best way to handle Resources.Load failing. The way I see it theres two ways to check, a Try Catch, or an if(null). The way I understand it, theres two options
// #1 ----- Try/catch -----------
try{
picture = Resources.Load<Texture2D>("MonkAssets/emm-logo-2014");
}
catch(NullReferenceException e){
Debug.LogError("Asset not loaded" + e.ToString());
}
catch(Exception e){
Debug.Log(e.ToString());
}
// #2 ------if/then------------
picture = Resources.Load<Texture2D>("MonkAssets/emm-logo-2014");
if(picture != null){
// Do stuff
}else{
Debug.LogError("Asset not loaded");
}
I understand that the if/then is faster and has less overhead, and that generally Try/Catch should be used sparingly and specifically, my question is specifically in this case, is Resources.Load risky enough to warrant using the try/catch? Which is better practice and why?
Thanks in advance. Dylan
Answer by gfoot · Apr 21, 2014 at 07:44 PM
Generally, pay attention to the conventions followed by the functions you're calling, and use the appropriate means to handle the error states they generate.
So if the function you're calling throws exceptions when things go wrong, then you can catch those exceptions to handle the errors. If it returns null when things go wrong (as is the case for Resources.Load) then you need to test for that instead, and an exception handler won't help (unless you try to dereference the null reference that was returned).
Your answer
![](https://koobas.hobune.stream/wayback/20220613143243im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Do I need to manually call Resources.UnloadUnusedAssets? 0 Answers
About to gut my use of the Resources folder. What are the best practices going forward? 1 Answer
What does Unity actually do when Loading Resources that already exist? 0 Answers
How does Resources.Load work internally 1 Answer
Lot of resource files 1 Answer