1
0
mirror of https://github.com/ppy/osu.git synced 2026-05-17 01:43:01 +08:00
Commit Graph

10 Commits

  • Seal UnknownMod
    Not a class for extension.
  • Remove the nullable disable annotation.
    Also, mark as nullable for some properties.
  • Change ToMod to return an UnknownMod rather than throw if a mod isn't available
    As seen by this kind of crash, having the `.ToMod` method throw can be
    very problematic and also hidden (as it is used inside of models in
    places where exceptions are not expected to occur).
    
    Given there are tens of usages of this method, returning a placeholder
    mod seems like a better idea than outright throwing.
    
    ```
     An unhandled has occurred.
     System.InvalidOperationException:
    There is no mod in the ruleset (osu) matching the acronym AS.
     at osu.Game.Online.API.APIMod.ToMod(Ruleset ruleset) in /Users/dean/Projects/osu/osu.Game/Online/API/APIMod.cs:line 54
     at osu.Game.Scoring.ScoreInfo.<get_Mods>b__117_0(APIMod m) in /Users/dean/Projects/osu/osu.Game/Scoring/ScoreInfo.cs:line 193
     at System.Linq.Enumerable.SelectArrayIterator`2.ToArray()
     at osu.Game.Scoring.ScoreInfo.get_Mods() in /Users/dean/Projects/osu/osu.Game/Scoring/ScoreInfo.cs:line 193
     at osu.Game.Screens.Select.Leaderboards.BeatmapLeaderboard.<>c.<subscribeToLocalScores>b__40_2(ScoreInfo s) in /Users/dean/Projects/osu/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs:line 199
     at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
     at osu.Game.Database.RealmObjectExtensions.Detach[T](IEnumerable`1 items) in /Users/dean/Projects/osu/osu.Game/Database/RealmObjectExtensions.cs:line 180
     at osu.Game.Screens.Select.Leaderboards.BeatmapLeaderboard.<>c__DisplayClass40_0.<subscribeToLocalScores>g__localScoresChanged|1(IRealmCollection`1 sender, ChangeSet changes, Exception exception) in /Users/dean/Projects/osu/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs:line
    209
     at Realms.RealmCollectionBase`1.Realms.INotifiable<Realms.NotifiableObjectHandleBase.CollectionChangeSet>.NotifyCallbacks(Nullable`1 changes, Nullable`1 exception)
     at Realms.NotifiableObjectHandleBase.NotifyObjectChanged(IntPtr managedHandle, IntPtr changes, IntPtr exception)
    ```