diff --git a/src/obj/NiSkinPartition.cpp b/src/obj/NiSkinPartition.cpp
index 9f188a4a336da3ef5dd6e97c24221f99d69ed221..b2cfb41efe27f31c5ca452750f3e5c07ddef5fb8 100644
--- a/src/obj/NiSkinPartition.cpp
+++ b/src/obj/NiSkinPartition.cpp
@@ -642,10 +642,7 @@ void NiSkinPartition::SetTriangles( int partition, const vector<Triangle> & in )
    if ( in.size() > 65535 || in.size() < 0 ) {
       throw runtime_error("Invalid Triangle Count: must be between 0 and 65535.");
    }
-   if ( partition < 0  || partition >= numSkinPartitionBlocks) {
-      throw runtime_error("Invalid partition number.");
-   };
-   SkinPartition& part = skinPartitionBlocks[partition];
+   SkinPartition& part = skinPartitionBlocks.at(partition); // at throws, [] does not
    part.triangles = in;
    part.hasFaces = (in.size() > 0) ? true : (part.strips.size() != 0);
    part.numTriangles = (unsigned short)(in.size());
diff --git a/test/skinpart_test.cpp b/test/skinpart_test.cpp
index 2ca9bd019de3590f92984e0160907099bce4f876..27e8d095a99b9e9267ba7060f0873a299daa774a 100644
--- a/test/skinpart_test.cpp
+++ b/test/skinpart_test.cpp
@@ -105,7 +105,7 @@ BOOST_AUTO_TEST_CASE(skinpart_triangles_partnum_test)
   verts.push_back(Vector3(0, 1, 0));
   verts.push_back(Vector3(0, 0, 1));
   tris.push_back(Triangle(0, 1, 2));
-  BOOST_CHECK_THROW(skinpart->SetTriangles(5, tris), std::runtime_error);
+  BOOST_CHECK_THROW(skinpart->SetTriangles(5, tris), std::out_of_range);
   BOOST_CHECK_NO_THROW(skinpart->SetTriangles(0, tris));
 }