{"record":{"id":"7dd964645bb20b4e","repo":"material-components/material-components-android","slug":"album-d-does-not-exist","errorCode":null,"errorMessage":"Album %d does not exist.","messagePattern":"Album (.+?) does not exist\\.","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"catalog/java/io/material/catalog/musicplayer/MusicData.java","lineNumber":129,"sourceCode":"              \"Annie Chiu\",\n              R.drawable.album_ellen_qin_unsplash,\n              TRACKS,\n              \"46 mins\"),\n          new Album(\n              9L,\n              \"On Dry Land\",\n              \"Alfonso Gonzalez\",\n              R.drawable.album_david_clode_unsplash,\n              TRACKS,\n              \"55 mins\"));\n\n  static Album getAlbumById(long albumId) {\n    for (Album album : MusicData.ALBUMS) {\n      if (album.id == albumId) {\n        return album;\n      }\n    }\n    throw new IllegalArgumentException(\n        String.format(Locale.US, \"Album %d does not exist.\", albumId));\n  }\n\n  /** A data class to hold information about a music album. */\n  public static class Album {\n\n    final long id;\n    final String title;\n    final String artist;\n    @DrawableRes final int cover;\n    final List<Track> tracks;\n    final String duration;\n\n    static final ItemCallback<Album> DIFF_CALLBACK =\n        new ItemCallback<Album>() {\n          @Override\n          public boolean areItemsTheSame(@NonNull Album newItem, @NonNull Album oldItem) {\n            return newItem.title.equals(oldItem.title);","sourceCodeStart":111,"sourceCodeEnd":147,"githubUrl":"https://github.com/material-components/material-components-android/blob/ac7e18efeefb331850c561faf9ab8bf81d27ba68/catalog/java/io/material/catalog/musicplayer/MusicData.java#L111-L147","documentation":"Thrown by MusicData.getAlbumById(long) in the catalog's musicplayer demo. It scans the static ALBUMS list and throws IllegalArgumentException when no Album matches the requested id. Sample-data helper, not part of the Material library API.","triggerScenarios":"Calling MusicData.getAlbumById(albumId) with an id not present in MusicData.ALBUMS (e.g. 0, a negative value, or an id beyond the number of hardcoded albums).","commonSituations":"Using the musicplayer demo as a template and passing ids from your own data source that do not match the sample ids; serializing/passing an album id that defaults to 0 before selection; off-by-one when generating ids.","solutions":["Pass an album id that exists in MusicData.ALBUMS (inspect the ALBUMS initializer for valid ids).","If you replaced ALBUMS with your own data, keep the ids you pass to getAlbumById consistent with that data.","Check the id against the ALBUMS list before calling, or wrap in try/catch IllegalArgumentException when a missing album is recoverable."],"exampleFix":"// before\nAlbum album = MusicData.getAlbumById(100); // not in ALBUMS\n\n// after\nlong id = MusicData.ALBUMS.get(0).id; // or a known valid id\nAlbum album = MusicData.getAlbumById(id);","handlingStrategy":"validation","validationCode":"boolean exists = false;\nfor (MusicData.Album a : MusicData.ALBUMS) { if (a.id == albumId) { exists = true; break; } }\nif (exists) { MusicData.getAlbumById(albumId); }","typeGuard":null,"tryCatchPattern":"Catch IllegalArgumentException where an unselected/unset id (e.g. 0) may reach the lookup; map it to a 'no album selected' UI state.","preventionTips":["Pass ids taken directly from Album objects in the ALBUMS list.","Guard against the default long (0) before data selection completes."],"tags":["catalog-demo","sample-data","illegal-argument","lookup"],"backgroundTag":null,"analyzedSha":"ac7e18efeefb331850c561faf9ab8bf81d27ba68","analyzedAt":"2026-08-14T15:35:35.735Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}