mirror of
https://github.com/tuyoogame/YooAsset.git
synced 2026-05-25 10:11:51 +00:00
perf : 异常处理替换为YOO的异常类
This commit is contained in:
@@ -87,11 +87,11 @@ namespace YooAsset
|
|||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Succeed;
|
Status = EOperationStatus.Succeed;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = $"Failed to load catalog file : {e.Message}";
|
Error = $"Failed to load catalog file : {ex.Message}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -499,7 +499,7 @@ namespace YooAsset
|
|||||||
{
|
{
|
||||||
if (_records.ContainsKey(bundle.BundleGUID))
|
if (_records.ContainsKey(bundle.BundleGUID))
|
||||||
{
|
{
|
||||||
throw new Exception("Should never get here !");
|
throw new YooInternalException();
|
||||||
}
|
}
|
||||||
|
|
||||||
string infoFilePath = GetBundleInfoFilePath(bundle);
|
string infoFilePath = GetBundleInfoFilePath(bundle);
|
||||||
@@ -521,9 +521,9 @@ namespace YooAsset
|
|||||||
// 写入文件信息
|
// 写入文件信息
|
||||||
WriteBundleInfoFile(infoFilePath, bundle.FileCRC, bundle.FileSize);
|
WriteBundleInfoFile(infoFilePath, bundle.FileCRC, bundle.FileSize);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
YooLogger.Error($"Failed to write cache file ! {e.Message}");
|
YooLogger.Error($"Failed to write cache file ! {ex.Message}");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,9 +37,9 @@ namespace YooAsset
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
YooLogger.Error($"Failed to delete cache file ! {e.Message}");
|
YooLogger.Error($"Failed to delete cache file ! {ex.Message}");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,9 +33,9 @@ namespace YooAsset
|
|||||||
{
|
{
|
||||||
Directory.Delete(FileRootPath, true);
|
Directory.Delete(FileRootPath, true);
|
||||||
}
|
}
|
||||||
catch (System.Exception e)
|
catch (System.Exception ex)
|
||||||
{
|
{
|
||||||
YooLogger.Warning($"Failed to delete cache bundle folder : {e}");
|
YooLogger.Warning($"Failed to delete cache bundle folder : {ex}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -320,11 +320,11 @@ namespace YooAsset
|
|||||||
File.Move(recordFileElement.DataFilePath, filePath);
|
File.Move(recordFileElement.DataFilePath, filePath);
|
||||||
_steps = ESteps.LoadCacheRawBundle;
|
_steps = ESteps.LoadCacheRawBundle;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = $"Faild rename raw data file : {e.Message}";
|
Error = $"Faild rename raw data file : {ex.Message}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ namespace YooAsset
|
|||||||
PackageName = packageName;
|
PackageName = packageName;
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(packageRoot))
|
if (string.IsNullOrEmpty(packageRoot))
|
||||||
throw new Exception($"{nameof(DefaultEditorFileSystem)} root directory is null or empty !");
|
throw new YooFileSystemException($"{nameof(DefaultEditorFileSystem)} package root is null or empty !");
|
||||||
|
|
||||||
_packageRoot = packageRoot;
|
_packageRoot = packageRoot;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,11 +81,11 @@ namespace YooAsset
|
|||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Succeed;
|
Status = EOperationStatus.Succeed;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = $"Failed to load catalog file : {e.Message}";
|
Error = $"Failed to load catalog file : {ex.Message}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ namespace YooAsset
|
|||||||
{
|
{
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
if (Childs.Contains(child))
|
if (Childs.Contains(child))
|
||||||
throw new Exception($"The child node {child.GetType().Name} already exists !");
|
throw new YooInternalException($"The child node {child.GetType().Name} already exists !");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Childs.Add(child);
|
Childs.Add(child);
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace YooAsset
|
|||||||
{
|
{
|
||||||
public static PackageInvokeBuildResult InvokeBuilder(PackageInvokeBuildParam buildParam)
|
public static PackageInvokeBuildResult InvokeBuilder(PackageInvokeBuildParam buildParam)
|
||||||
{
|
{
|
||||||
throw new System.Exception("Only support in unity editor platform !");
|
throw new YooPlatformNotSupportedException("This feature is only supported in Unity Editor platform.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace YooAsset
|
|||||||
add
|
add
|
||||||
{
|
{
|
||||||
if (IsValidWithWarning == false)
|
if (IsValidWithWarning == false)
|
||||||
throw new System.Exception($"{nameof(AllAssetsHandle)} is invalid");
|
throw new YooHandleException($"{nameof(AllAssetsHandle)} is invalid. It may have been released or the provider was destroyed.");
|
||||||
if (Provider.IsDone)
|
if (Provider.IsDone)
|
||||||
value.Invoke(this);
|
value.Invoke(this);
|
||||||
else
|
else
|
||||||
@@ -31,7 +31,7 @@ namespace YooAsset
|
|||||||
remove
|
remove
|
||||||
{
|
{
|
||||||
if (IsValidWithWarning == false)
|
if (IsValidWithWarning == false)
|
||||||
throw new System.Exception($"{nameof(AllAssetsHandle)} is invalid");
|
throw new YooHandleException($"{nameof(AllAssetsHandle)} is invalid. It may have been released or the provider was destroyed.");
|
||||||
_callback -= value;
|
_callback -= value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace YooAsset
|
|||||||
add
|
add
|
||||||
{
|
{
|
||||||
if (IsValidWithWarning == false)
|
if (IsValidWithWarning == false)
|
||||||
throw new System.Exception($"{nameof(AssetHandle)} is invalid");
|
throw new YooHandleException($"{nameof(AssetHandle)} is invalid. It may have been released or the provider was destroyed.");
|
||||||
if (Provider.IsDone)
|
if (Provider.IsDone)
|
||||||
value.Invoke(this);
|
value.Invoke(this);
|
||||||
else
|
else
|
||||||
@@ -31,7 +31,7 @@ namespace YooAsset
|
|||||||
remove
|
remove
|
||||||
{
|
{
|
||||||
if (IsValidWithWarning == false)
|
if (IsValidWithWarning == false)
|
||||||
throw new System.Exception($"{nameof(AssetHandle)} is invalid");
|
throw new YooHandleException($"{nameof(AssetHandle)} is invalid. It may have been released or the provider was destroyed.");
|
||||||
_callback -= value;
|
_callback -= value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace YooAsset
|
|||||||
add
|
add
|
||||||
{
|
{
|
||||||
if (IsValidWithWarning == false)
|
if (IsValidWithWarning == false)
|
||||||
throw new System.Exception($"{nameof(RawFileHandle)} is invalid");
|
throw new YooHandleException($"{nameof(RawFileHandle)} is invalid. It may have been released or the provider was destroyed.");
|
||||||
if (Provider.IsDone)
|
if (Provider.IsDone)
|
||||||
value.Invoke(this);
|
value.Invoke(this);
|
||||||
else
|
else
|
||||||
@@ -30,7 +30,7 @@ namespace YooAsset
|
|||||||
remove
|
remove
|
||||||
{
|
{
|
||||||
if (IsValidWithWarning == false)
|
if (IsValidWithWarning == false)
|
||||||
throw new System.Exception($"{nameof(RawFileHandle)} is invalid");
|
throw new YooHandleException($"{nameof(RawFileHandle)} is invalid. It may have been released or the provider was destroyed.");
|
||||||
_callback -= value;
|
_callback -= value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace YooAsset
|
|||||||
add
|
add
|
||||||
{
|
{
|
||||||
if (IsValidWithWarning == false)
|
if (IsValidWithWarning == false)
|
||||||
throw new System.Exception($"{nameof(SceneHandle)} is invalid !");
|
throw new YooHandleException($"{nameof(SceneHandle)} is invalid. It may have been released or the provider was destroyed.");
|
||||||
if (Provider.IsDone)
|
if (Provider.IsDone)
|
||||||
value.Invoke(this);
|
value.Invoke(this);
|
||||||
else
|
else
|
||||||
@@ -32,7 +32,7 @@ namespace YooAsset
|
|||||||
remove
|
remove
|
||||||
{
|
{
|
||||||
if (IsValidWithWarning == false)
|
if (IsValidWithWarning == false)
|
||||||
throw new System.Exception($"{nameof(SceneHandle)} is invalid !");
|
throw new YooHandleException($"{nameof(SceneHandle)} is invalid. It may have been released or the provider was destroyed.");
|
||||||
_callback -= value;
|
_callback -= value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace YooAsset
|
|||||||
add
|
add
|
||||||
{
|
{
|
||||||
if (IsValidWithWarning == false)
|
if (IsValidWithWarning == false)
|
||||||
throw new System.Exception($"{nameof(SubAssetsHandle)} is invalid");
|
throw new YooHandleException($"{nameof(SubAssetsHandle)} is invalid. It may have been released or the provider was destroyed.");
|
||||||
if (Provider.IsDone)
|
if (Provider.IsDone)
|
||||||
value.Invoke(this);
|
value.Invoke(this);
|
||||||
else
|
else
|
||||||
@@ -31,7 +31,7 @@ namespace YooAsset
|
|||||||
remove
|
remove
|
||||||
{
|
{
|
||||||
if (IsValidWithWarning == false)
|
if (IsValidWithWarning == false)
|
||||||
throw new System.Exception($"{nameof(SubAssetsHandle)} is invalid");
|
throw new YooHandleException($"{nameof(SubAssetsHandle)} is invalid. It may have been released or the provider was destroyed.");
|
||||||
_callback -= value;
|
_callback -= value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -166,10 +166,10 @@ namespace YooAsset
|
|||||||
|
|
||||||
// 注意:正在加载中的任务不可以销毁
|
// 注意:正在加载中的任务不可以销毁
|
||||||
if (_steps == ESteps.LoadBundleFile)
|
if (_steps == ESteps.LoadBundleFile)
|
||||||
throw new Exception($"Bundle file loader is not done : {LoadBundleInfo.Bundle.BundleName}");
|
throw new YooInternalException($"Cannot destroy loader while loading bundle : {LoadBundleInfo.Bundle.BundleName}");
|
||||||
|
|
||||||
if (RefCount > 0)
|
if (RefCount > 0)
|
||||||
throw new Exception($"Bundle file loader ref is not zero : {LoadBundleInfo.Bundle.BundleName}");
|
throw new YooInternalException($"Cannot destroy loader with non-zero ref count {RefCount} : {LoadBundleInfo.Bundle.BundleName}");
|
||||||
|
|
||||||
if (Result != null)
|
if (Result != null)
|
||||||
Result.UnloadBundleFile();
|
Result.UnloadBundleFile();
|
||||||
|
|||||||
@@ -265,18 +265,18 @@ namespace YooAsset
|
|||||||
public void ReleaseHandle(HandleBase handle)
|
public void ReleaseHandle(HandleBase handle)
|
||||||
{
|
{
|
||||||
if (RefCount <= 0)
|
if (RefCount <= 0)
|
||||||
throw new System.Exception("Should never get here !");
|
throw new YooInternalException($"Attempting to release handle when RefCount is already zero. Asset : {MainAssetInfo.AssetPath}");
|
||||||
|
|
||||||
if (_resManager.UseWeakReferenceHandle)
|
if (_resManager.UseWeakReferenceHandle)
|
||||||
{
|
{
|
||||||
// TODO 高危风险:如果移除弱引用失败,会导致资源永远无法释放。
|
// TODO 高危风险:如果移除弱引用失败,会导致资源永远无法释放。
|
||||||
if (RemoveWeakReference(handle) == false)
|
if (RemoveWeakReference(handle) == false)
|
||||||
throw new System.Exception("Should never get here !");
|
throw new YooInternalException($"Handle not found in weak reference list. Asset: {MainAssetInfo.AssetPath}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (_handles.Remove(handle) == false)
|
if (_handles.Remove(handle) == false)
|
||||||
throw new System.Exception("Should never get here !");
|
throw new YooInternalException($"Handle not found in cache list. Asset: {MainAssetInfo.AssetPath}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 引用计数减少
|
// 引用计数减少
|
||||||
@@ -385,7 +385,7 @@ namespace YooAsset
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (status.TotalBytes == 0)
|
if (status.TotalBytes == 0)
|
||||||
throw new System.Exception("Should never get here !");
|
throw new YooInternalException("Download total size can not be zero.");
|
||||||
|
|
||||||
status.IsDone = status.DownloadedBytes == status.TotalBytes;
|
status.IsDone = status.DownloadedBytes == status.TotalBytes;
|
||||||
status.Progress = (float)status.DownloadedBytes / status.TotalBytes;
|
status.Progress = (float)status.DownloadedBytes / status.TotalBytes;
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ namespace YooAsset
|
|||||||
internal AssetInfo(string packageName, PackageAsset packageAsset, System.Type assetType)
|
internal AssetInfo(string packageName, PackageAsset packageAsset, System.Type assetType)
|
||||||
{
|
{
|
||||||
if (packageAsset == null)
|
if (packageAsset == null)
|
||||||
throw new System.Exception("Should never get here !");
|
throw new YooInternalException("Package asset can not be null.");
|
||||||
|
|
||||||
_providerGUID = string.Empty;
|
_providerGUID = string.Empty;
|
||||||
_packageAsset = packageAsset;
|
_packageAsset = packageAsset;
|
||||||
|
|||||||
@@ -115,9 +115,9 @@ namespace YooAsset
|
|||||||
|
|
||||||
// 检测配置
|
// 检测配置
|
||||||
if (Manifest.EnableAddressable && Manifest.LocationToLower)
|
if (Manifest.EnableAddressable && Manifest.LocationToLower)
|
||||||
throw new System.Exception("Addressable not support location to lower !");
|
throw new YooManifestException("Addressable not support location to lower !");
|
||||||
if (Manifest.EnableAddressable == false && Manifest.ReplaceAssetPathWithAddress)
|
if (Manifest.EnableAddressable == false && Manifest.ReplaceAssetPathWithAddress)
|
||||||
throw new System.Exception("Replace asset path with address need enable Addressable !");
|
throw new YooManifestException("Replace asset path with address need enable Addressable !");
|
||||||
|
|
||||||
_steps = ESteps.PrepareAssetList;
|
_steps = ESteps.PrepareAssetList;
|
||||||
}
|
}
|
||||||
@@ -216,12 +216,12 @@ namespace YooAsset
|
|||||||
Status = EOperationStatus.Succeed;
|
Status = EOperationStatus.Succeed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (System.Exception e)
|
catch (System.Exception ex)
|
||||||
{
|
{
|
||||||
Manifest = null;
|
Manifest = null;
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = e.Message;
|
Error = ex.Message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
internal override void InternalWaitForAsyncComplete()
|
internal override void InternalWaitForAsyncComplete()
|
||||||
@@ -266,7 +266,7 @@ namespace YooAsset
|
|||||||
// 注意:我们不允许原始路径存在重名
|
// 注意:我们不允许原始路径存在重名
|
||||||
string assetPath = packageAsset.AssetPath;
|
string assetPath = packageAsset.AssetPath;
|
||||||
if (manifest.AssetDic.ContainsKey(assetPath))
|
if (manifest.AssetDic.ContainsKey(assetPath))
|
||||||
throw new System.Exception($"AssetPath have existed : {assetPath}");
|
throw new YooManifestException($"AssetPath have existed : {assetPath}");
|
||||||
else
|
else
|
||||||
manifest.AssetDic.Add(assetPath, packageAsset);
|
manifest.AssetDic.Add(assetPath, packageAsset);
|
||||||
|
|
||||||
@@ -276,7 +276,7 @@ namespace YooAsset
|
|||||||
|
|
||||||
// 添加原生路径的映射
|
// 添加原生路径的映射
|
||||||
if (manifest.AssetPathMapping1.ContainsKey(location))
|
if (manifest.AssetPathMapping1.ContainsKey(location))
|
||||||
throw new System.Exception($"Location have existed : {location}");
|
throw new YooManifestException($"Location have existed : {location}");
|
||||||
else
|
else
|
||||||
manifest.AssetPathMapping1.Add(location, packageAsset.AssetPath);
|
manifest.AssetPathMapping1.Add(location, packageAsset.AssetPath);
|
||||||
|
|
||||||
@@ -298,7 +298,7 @@ namespace YooAsset
|
|||||||
if (manifest.IncludeAssetGUID)
|
if (manifest.IncludeAssetGUID)
|
||||||
{
|
{
|
||||||
if (manifest.AssetPathMapping2.ContainsKey(packageAsset.AssetGUID))
|
if (manifest.AssetPathMapping2.ContainsKey(packageAsset.AssetGUID))
|
||||||
throw new System.Exception($"AssetGUID have existed : {packageAsset.AssetGUID}");
|
throw new YooManifestException($"AssetGUID have existed : {packageAsset.AssetGUID}");
|
||||||
else
|
else
|
||||||
manifest.AssetPathMapping2.Add(packageAsset.AssetGUID, packageAsset.AssetPath);
|
manifest.AssetPathMapping2.Add(packageAsset.AssetGUID, packageAsset.AssetPath);
|
||||||
}
|
}
|
||||||
@@ -310,7 +310,7 @@ namespace YooAsset
|
|||||||
if (string.IsNullOrEmpty(location) == false)
|
if (string.IsNullOrEmpty(location) == false)
|
||||||
{
|
{
|
||||||
if (manifest.AssetPathMapping1.ContainsKey(location))
|
if (manifest.AssetPathMapping1.ContainsKey(location))
|
||||||
throw new System.Exception($"Location have existed : {location}");
|
throw new YooManifestException($"Location have existed : {location}");
|
||||||
else
|
else
|
||||||
manifest.AssetPathMapping1.Add(location, packageAsset.AssetPath);
|
manifest.AssetPathMapping1.Add(location, packageAsset.AssetPath);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ namespace YooAsset
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(_fileName))
|
if (string.IsNullOrEmpty(_fileName))
|
||||||
throw new Exception("Should never get here !");
|
throw new YooInternalException("File name can not be null or empty.");
|
||||||
return _fileName;
|
return _fileName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ namespace YooAsset
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(_fileExtension))
|
if (string.IsNullOrEmpty(_fileExtension))
|
||||||
throw new Exception("Should never get here !");
|
throw new YooInternalException("File extension can not be null or empty.");
|
||||||
return _fileExtension;
|
return _fileExtension;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ namespace YooAsset
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new Exception($"Invalid bundle id : {bundleID} Asset path : {packageAsset.AssetPath}");
|
throw new YooManifestException($"Invalid bundle ID : {bundleID}. Valid range is 0 to {BundleList.Count - 1}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,11 +196,13 @@ namespace YooAsset
|
|||||||
if (bundleID >= 0 && bundleID < BundleList.Count)
|
if (bundleID >= 0 && bundleID < BundleList.Count)
|
||||||
{
|
{
|
||||||
var packageBundle = BundleList[bundleID];
|
var packageBundle = BundleList[bundleID];
|
||||||
|
if (packageBundle == null)
|
||||||
|
throw new YooInternalException();
|
||||||
return packageBundle;
|
return packageBundle;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new Exception($"Invalid bundle id : {bundleID}");
|
throw new YooManifestException($"Invalid bundle ID : {bundleID}. Valid range is 0 to {BundleList.Count - 1}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ namespace YooAsset
|
|||||||
private BundleInfo CreateBundleInfo(PackageBundle packageBundle)
|
private BundleInfo CreateBundleInfo(PackageBundle packageBundle)
|
||||||
{
|
{
|
||||||
if (packageBundle == null)
|
if (packageBundle == null)
|
||||||
throw new Exception("Should never get here !");
|
throw new YooInternalException();
|
||||||
|
|
||||||
var fileSystem = GetBelongFileSystem(packageBundle);
|
var fileSystem = GetBelongFileSystem(packageBundle);
|
||||||
if (fileSystem != null)
|
if (fileSystem != null)
|
||||||
@@ -165,12 +165,12 @@ namespace YooAsset
|
|||||||
return bundleInfo;
|
return bundleInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Exception($"Can not found belong file system : {packageBundle.BundleName}");
|
throw new YooFileSystemException($"Can not found belong file system : {packageBundle.BundleName}");
|
||||||
}
|
}
|
||||||
BundleInfo IBundleQuery.GetMainBundleInfo(AssetInfo assetInfo)
|
BundleInfo IBundleQuery.GetMainBundleInfo(AssetInfo assetInfo)
|
||||||
{
|
{
|
||||||
if (assetInfo == null || assetInfo.IsInvalid)
|
if (assetInfo == null || assetInfo.IsInvalid)
|
||||||
throw new Exception("Should never get here !");
|
throw new YooInternalException();
|
||||||
|
|
||||||
// 注意:如果清单里未找到资源包会抛出异常!
|
// 注意:如果清单里未找到资源包会抛出异常!
|
||||||
var packageBundle = ActiveManifest.GetMainPackageBundle(assetInfo.Asset);
|
var packageBundle = ActiveManifest.GetMainPackageBundle(assetInfo.Asset);
|
||||||
@@ -179,7 +179,7 @@ namespace YooAsset
|
|||||||
List<BundleInfo> IBundleQuery.GetDependBundleInfos(AssetInfo assetInfo)
|
List<BundleInfo> IBundleQuery.GetDependBundleInfos(AssetInfo assetInfo)
|
||||||
{
|
{
|
||||||
if (assetInfo == null || assetInfo.IsInvalid)
|
if (assetInfo == null || assetInfo.IsInvalid)
|
||||||
throw new Exception("Should never get here !");
|
throw new YooInternalException();
|
||||||
|
|
||||||
// 注意:如果清单里未找到资源包会抛出异常!
|
// 注意:如果清单里未找到资源包会抛出异常!
|
||||||
List<PackageBundle> depends;
|
List<PackageBundle> depends;
|
||||||
|
|||||||
@@ -152,19 +152,19 @@ namespace YooAsset
|
|||||||
private void CheckInitializeParameters(InitializeParameters parameters)
|
private void CheckInitializeParameters(InitializeParameters parameters)
|
||||||
{
|
{
|
||||||
if (_isInitialize)
|
if (_isInitialize)
|
||||||
throw new Exception($"{nameof(ResourcePackage)} is initialized yet.");
|
throw new YooPackageException(PackageName, $"Package '{PackageName}' is already initialized !");
|
||||||
|
|
||||||
if (parameters == null)
|
if (parameters == null)
|
||||||
throw new Exception($"{nameof(ResourcePackage)} create parameters is null.");
|
throw new YooPackageException(PackageName, $"Initialize parameters cannot be null.");
|
||||||
|
|
||||||
#if !UNITY_EDITOR
|
#if !UNITY_EDITOR
|
||||||
if (parameters is EditorSimulateModeParameters)
|
if (parameters is EditorSimulateModeParameters)
|
||||||
throw new Exception($"Editor simulate mode only support unity editor.");
|
throw new YooPlatformNotSupportedException($"Editor simulate mode only support unity editor.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 检测初始化参数
|
// 检测初始化参数
|
||||||
if (parameters.BundleLoadingMaxConcurrency <= 0)
|
if (parameters.BundleLoadingMaxConcurrency <= 0)
|
||||||
throw new Exception($"{nameof(parameters.BundleLoadingMaxConcurrency)} value must be greater than zero.");
|
throw new YooPackageException(PackageName, $"{nameof(parameters.BundleLoadingMaxConcurrency)} value must be greater than zero.");
|
||||||
|
|
||||||
// 鉴定运行模式
|
// 鉴定运行模式
|
||||||
if (parameters is EditorSimulateModeParameters)
|
if (parameters is EditorSimulateModeParameters)
|
||||||
@@ -186,12 +186,12 @@ namespace YooAsset
|
|||||||
#if UNITY_WEBGL
|
#if UNITY_WEBGL
|
||||||
if (_playMode != EPlayMode.WebPlayMode)
|
if (_playMode != EPlayMode.WebPlayMode)
|
||||||
{
|
{
|
||||||
throw new Exception($"{_playMode} can not support WebGL plateform !");
|
throw new YooPlatformNotSupportedException($"{_playMode} can not support WebGL plateform !");
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (_playMode == EPlayMode.WebPlayMode)
|
if (_playMode == EPlayMode.WebPlayMode)
|
||||||
{
|
{
|
||||||
throw new Exception($"{nameof(EPlayMode.WebPlayMode)} only support WebGL plateform !");
|
throw new YooPlatformNotSupportedException($"{nameof(EPlayMode.WebPlayMode)} only support WebGL plateform !");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -1158,14 +1158,14 @@ namespace YooAsset
|
|||||||
private void DebugCheckInitialize(bool checkActiveManifest = true)
|
private void DebugCheckInitialize(bool checkActiveManifest = true)
|
||||||
{
|
{
|
||||||
if (_initializeStatus == EOperationStatus.None)
|
if (_initializeStatus == EOperationStatus.None)
|
||||||
throw new Exception("Package initialize not completed !");
|
throw new YooPackageException(PackageName, "Package initialize not completed !");
|
||||||
else if (_initializeStatus == EOperationStatus.Failed)
|
else if (_initializeStatus == EOperationStatus.Failed)
|
||||||
throw new Exception($"Package initialize failed ! {_initializeError}");
|
throw new YooPackageException(PackageName, $"Package initialize failed ! {_initializeError}");
|
||||||
|
|
||||||
if (checkActiveManifest)
|
if (checkActiveManifest)
|
||||||
{
|
{
|
||||||
if (_playModeImpl.ActiveManifest == null)
|
if (_playModeImpl.ActiveManifest == null)
|
||||||
throw new Exception("Can not found active package manifest !");
|
throw new YooPackageException(PackageName, "Can not found active package manifest !");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1177,12 +1177,12 @@ namespace YooAsset
|
|||||||
|
|
||||||
if (typeof(UnityEngine.Behaviour).IsAssignableFrom(type))
|
if (typeof(UnityEngine.Behaviour).IsAssignableFrom(type))
|
||||||
{
|
{
|
||||||
throw new Exception($"Load asset type is invalid : {type.FullName} !");
|
throw new YooLoadException($"Load asset type is invalid : {type.FullName} !");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof(UnityEngine.Object).IsAssignableFrom(type) == false)
|
if (typeof(UnityEngine.Object).IsAssignableFrom(type) == false)
|
||||||
{
|
{
|
||||||
throw new Exception($"Load asset type is invalid : {type.FullName} !");
|
throw new YooLoadException($"Load asset type is invalid : {type.FullName} !");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
156
Assets/YooAsset/Runtime/Utility/YooException.cs
Normal file
156
Assets/YooAsset/Runtime/Utility/YooException.cs
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace YooAsset
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// YooAsset 异常基类
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class YooException : Exception
|
||||||
|
{
|
||||||
|
public YooException() : base() { }
|
||||||
|
public YooException(string message) : base(message) { }
|
||||||
|
public YooException(string message, Exception inner) : base(message, inner) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 内部错误异常
|
||||||
|
/// 当发生不应该发生的内部错误时抛出(通常表示代码逻辑错误)
|
||||||
|
/// 这类异常通常表示需要修复代码,而不是用户使用错误
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class YooInternalException : YooException
|
||||||
|
{
|
||||||
|
public YooInternalException() : base($"Internal error (should never happen)") { }
|
||||||
|
public YooInternalException(string message) : base($"Internal error (should never happen) {message}") { }
|
||||||
|
public YooInternalException(Exception inner) : base($"Internal error (should never happen)", inner) { }
|
||||||
|
public YooInternalException(string message, Exception inner) : base($"Internal error (should never happen) {message}", inner) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 初始化相关异常
|
||||||
|
/// 当 YooAsset 系统初始化失败或未初始化时访问功能时抛出
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class YooInitializeException : YooException
|
||||||
|
{
|
||||||
|
public YooInitializeException() : base() { }
|
||||||
|
public YooInitializeException(string message) : base(message) { }
|
||||||
|
public YooInitializeException(string message, Exception inner) : base(message, inner) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 平台不支持异常
|
||||||
|
/// 当功能在当前平台不支持时抛出
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class YooPlatformNotSupportedException : YooException
|
||||||
|
{
|
||||||
|
public YooPlatformNotSupportedException() : base()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public YooPlatformNotSupportedException(string message) : base(message)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public YooPlatformNotSupportedException(string message, Exception inner) : base(message, inner) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 包裹管理异常
|
||||||
|
/// 当包裹创建、销毁、初始化等操作失败时抛出
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class YooPackageException : YooException
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 包裹名称
|
||||||
|
/// </summary>
|
||||||
|
public string PackageName { get; }
|
||||||
|
|
||||||
|
public YooPackageException(string packageName) : base()
|
||||||
|
{
|
||||||
|
PackageName = packageName;
|
||||||
|
}
|
||||||
|
public YooPackageException(string packageName, string message) : base(message)
|
||||||
|
{
|
||||||
|
PackageName = packageName;
|
||||||
|
}
|
||||||
|
public YooPackageException(string packageName, string message, Exception inner) : base(message, inner)
|
||||||
|
{
|
||||||
|
PackageName = packageName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 资源清单文件异常
|
||||||
|
/// 当资源清单加载、数据无效或损坏时抛出
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class YooManifestException : YooException
|
||||||
|
{
|
||||||
|
public YooManifestException() : base()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public YooManifestException(string message) : base(message)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public YooManifestException(string message, Exception inner) : base(message, inner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 资源加载异常
|
||||||
|
/// 当资源加载类型不匹配时抛出
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class YooLoadException : YooException
|
||||||
|
{
|
||||||
|
public YooLoadException() : base()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public YooLoadException(string message) : base(message)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public YooLoadException(string message, Exception inner)
|
||||||
|
: base(message, inner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 资源句柄异常
|
||||||
|
/// 当句柄无效或操作句柄失败时抛出
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class YooHandleException : YooException
|
||||||
|
{
|
||||||
|
public YooHandleException() : base()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public YooHandleException(string message) : base(message)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public YooHandleException(string message, Exception inner) : base(message, inner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 文件系统异常
|
||||||
|
/// 当文件读写、验证、缓存操作失败时抛出
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class YooFileSystemException : YooException
|
||||||
|
{
|
||||||
|
public YooFileSystemException() : base()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public YooFileSystemException(string message) : base(message)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public YooFileSystemException(string message, Exception inner) : base(message, inner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/YooAsset/Runtime/Utility/YooException.cs.meta
Normal file
11
Assets/YooAsset/Runtime/Utility/YooException.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ebd053b66fcf53a4a95863d5056c004f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -242,9 +242,9 @@ namespace YooAsset
|
|||||||
{
|
{
|
||||||
return FileSHA1(filePath);
|
return FileSHA1(filePath);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
YooLogger.Exception(e);
|
YooLogger.Exception(ex);
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -302,9 +302,9 @@ namespace YooAsset
|
|||||||
{
|
{
|
||||||
return FileMD5(filePath);
|
return FileMD5(filePath);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
YooLogger.Exception(e);
|
YooLogger.Exception(ex);
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -372,9 +372,9 @@ namespace YooAsset
|
|||||||
{
|
{
|
||||||
return FileCRC32(filePath);
|
return FileCRC32(filePath);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
YooLogger.Exception(e);
|
YooLogger.Exception(ex);
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -384,9 +384,9 @@ namespace YooAsset
|
|||||||
{
|
{
|
||||||
return FileCRC32Value(filePath);
|
return FileCRC32Value(filePath);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
YooLogger.Exception(e);
|
YooLogger.Exception(ex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ namespace YooAsset
|
|||||||
{
|
{
|
||||||
CheckException(packageName);
|
CheckException(packageName);
|
||||||
if (ContainsPackage(packageName))
|
if (ContainsPackage(packageName))
|
||||||
throw new Exception($"Package {packageName} already existed !");
|
throw new YooPackageException(packageName, $"Package {packageName} already existed ! Cannot create duplicate packages.");
|
||||||
|
|
||||||
YooLogger.Log($"Create resource package : {packageName}");
|
YooLogger.Log($"Create resource package : {packageName}");
|
||||||
ResourcePackage package = new ResourcePackage(packageName);
|
ResourcePackage package = new ResourcePackage(packageName);
|
||||||
@@ -223,18 +223,18 @@ namespace YooAsset
|
|||||||
private static void CheckException(string packageName)
|
private static void CheckException(string packageName)
|
||||||
{
|
{
|
||||||
if (_isInitialize == false)
|
if (_isInitialize == false)
|
||||||
throw new Exception($"{nameof(YooAssets)} not initialize !");
|
throw new YooInitializeException($"{nameof(YooAssets)} not initialized ! Please call {nameof(YooAssets.Initialize)} first.");
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(packageName))
|
if (string.IsNullOrEmpty(packageName))
|
||||||
throw new Exception("Package name is null or empty !");
|
throw new YooInitializeException("Package name cannot be null or empty !");
|
||||||
}
|
}
|
||||||
private static void CheckException(ResourcePackage package)
|
private static void CheckException(ResourcePackage package)
|
||||||
{
|
{
|
||||||
if (_isInitialize == false)
|
if (_isInitialize == false)
|
||||||
throw new Exception($"{nameof(YooAssets)} not initialize !");
|
throw new YooInitializeException($"{nameof(YooAssets)} not initialized ! Please call {nameof(YooAssets.Initialize)} first.");
|
||||||
|
|
||||||
if (package == null)
|
if (package == null)
|
||||||
throw new Exception("Package instance is null !");
|
throw new YooInitializeException("Package instance cannot be null !");
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 系统参数
|
#region 系统参数
|
||||||
|
|||||||
@@ -612,7 +612,7 @@ namespace YooAsset
|
|||||||
private static void DebugCheckDefaultPackageValid()
|
private static void DebugCheckDefaultPackageValid()
|
||||||
{
|
{
|
||||||
if (_defaultPackage == null)
|
if (_defaultPackage == null)
|
||||||
throw new Exception($"Default package is null. Please use {nameof(YooAssets.SetDefaultPackage)} !");
|
throw new YooInitializeException($"Default package is null. Please use {nameof(YooAssets.SetDefaultPackage)} !");
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user