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

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).